20#ifndef ConfigurationObjects_h
21#define ConfigurationObjects_h
24#include "EngageConstants.h"
33#include <nlohmann/json.hpp>
36 #pragma GCC diagnostic push
37 #pragma GCC diagnostic ignored "-Wunused-function"
40#if !defined(ENGAGE_IGNORE_COMPILER_UNUSED_WARNING)
42 #define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING __attribute__((unused))
44 #define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING
50#if defined(RTS_CORE_BUILD)
51namespace ConfigurationObjects
53namespace AppConfigurationObjects
56 static const char *ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT =
"_attached";
150 } DataSeriesValueType_t;
164 bloodOxygenation = 5,
166 taskEffectiveness = 7
167 } HumanBiometricsTypes_t;
171 static FILE *_internalFileOpener(
const char *fn,
const char *mode)
176 fp = fopen(fn, mode);
178 if(fopen_s(&fp, fn, mode) != 0)
187 #define JSON_SERIALIZED_CLASS(_cn) \
189 static void to_json(nlohmann::json& j, const _cn& p); \
190 static void from_json(const nlohmann::json& j, _cn& p);
192 #define IMPLEMENT_JSON_DOCUMENTATION(_cn) \
194 static void document(const char *path = nullptr) \
197 example.initForDocumenting(); \
198 std::string theJson = example.serialize(3); \
199 std::cout << "------------------------------------------------" << std::endl \
200 << #_cn << std::endl \
201 << theJson << std::endl \
202 << "------------------------------------------------" << std::endl; \
204 if(path != nullptr && path[0] != 0) \
206 std::string fn = path; \
209 fn.append(".json"); \
211 FILE *fp = _internalFileOpener(fn.c_str(), "wt");\
215 fputs(theJson.c_str(), fp); \
220 std::cout << "ERROR: Cannot write to " << fn << std::endl; \
224 static const char *className() \
229 #define IMPLEMENT_JSON_SERIALIZATION() \
231 bool deserialize(const char *s) \
235 if(s != nullptr && s[0] != 0) \
237 from_json(nlohmann::json::parse(s), *this); \
251 std::string serialize(const int indent = -1) \
257 return j.dump(indent); \
261 return std::string("{}"); \
265 #define IMPLEMENT_WRAPPED_JSON_SERIALIZATION(_cn) \
267 std::string serializeWrapped(const int indent = -1) \
276 firstChar[0] = #_cn[0]; \
278 firstChar[0] = tolower(firstChar[0]); \
280 rc.append(firstChar); \
281 rc.append((#_cn) + 1); \
283 rc.append(j.dump(indent)); \
290 return std::string("{}"); \
294 #define TOJSON_IMPL(__var) \
297 #define FROMJSON_IMPL_SIMPLE(__var) \
298 getOptional(#__var, p.__var, j)
300 #define FROMJSON_IMPL(__var, __type, __default) \
301 getOptional<__type>(#__var, p.__var, j, __default)
303 #define TOJSON_BASE_IMPL() \
304 to_json(j, (ConfigurationObjectBase&)p)
306 #define FROMJSON_BASE_IMPL() \
307 from_json(j, (ConfigurationObjectBase&)p);
311 static std::string EMPTY_STRING;
314 static void getOptional(
const char *name, T& v,
const nlohmann::json& j, T def)
320 j.at(name).get_to(v);
334 static void getOptional(
const char *name, T& v,
const nlohmann::json& j)
340 j.at(name).get_to(v);
349 static void getOptionalWithIndicator(
const char *name, T& v,
const nlohmann::json& j, T def,
bool *wasFound)
355 j.at(name).get_to(v);
372 static void getOptionalWithIndicator(
const char *name, T& v,
const nlohmann::json& j,
bool *wasFound)
378 j.at(name).get_to(v);
397 _documenting =
false;
404 virtual void initForDocumenting()
409 virtual std::string toString()
411 return std::string(
"");
414 inline virtual bool isDocumenting()
const
419 nlohmann::json _attached;
429 if(p._attached !=
nullptr)
431 j[ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT] = p._attached;
438 static void from_json(
const nlohmann::json& j, ConfigurationObjectBase& p)
442 if(j.contains(ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT))
444 p._attached = j.at(ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT);
453 JSON_SERIALIZED_CLASS(KvPair)
462 IMPLEMENT_JSON_SERIALIZATION()
463 IMPLEMENT_JSON_DOCUMENTATION(
KvPair)
484 static void to_json(nlohmann::json& j,
const KvPair& p)
491 static void from_json(
const nlohmann::json& j, KvPair& p)
494 getOptional<std::string>(
"key", p.key, j, EMPTY_STRING);
495 getOptional<std::string>(
"tags", p.value, j, EMPTY_STRING);
499 JSON_SERIALIZED_CLASS(TuningSettings)
502 IMPLEMENT_JSON_SERIALIZATION()
546 maxPooledRtpObjects = 0;
547 maxActiveRtpObjects = 0;
550 maxPooledBlobObjects = 0;
551 maxActiveBlobObjects = 0;
553 maxPooledBufferMb = 0;
554 maxPooledBufferObjects = 0;
555 maxActiveBufferObjects = 0;
557 maxActiveRtpProcessors = 0;
560 virtual void initForDocumenting()
566 static void to_json(nlohmann::json& j,
const TuningSettings& p)
569 TOJSON_IMPL(maxPooledRtpMb),
570 TOJSON_IMPL(maxPooledRtpObjects),
571 TOJSON_IMPL(maxActiveRtpObjects),
573 TOJSON_IMPL(maxPooledBlobMb),
574 TOJSON_IMPL(maxPooledBlobObjects),
575 TOJSON_IMPL(maxActiveBlobObjects),
577 TOJSON_IMPL(maxPooledBufferMb),
578 TOJSON_IMPL(maxPooledBufferObjects),
579 TOJSON_IMPL(maxActiveBufferObjects),
581 TOJSON_IMPL(maxActiveRtpProcessors)
584 static void from_json(
const nlohmann::json& j, TuningSettings& p)
587 FROMJSON_IMPL(maxPooledRtpMb, uint32_t, 0);
588 FROMJSON_IMPL(maxPooledRtpObjects, uint32_t, 0);
589 FROMJSON_IMPL(maxActiveRtpObjects, uint32_t, 0);
591 FROMJSON_IMPL(maxPooledBlobMb, uint32_t, 0);
592 FROMJSON_IMPL(maxPooledBlobObjects, uint32_t, 0);
593 FROMJSON_IMPL(maxActiveBlobObjects, uint32_t, 0);
595 FROMJSON_IMPL(maxPooledBufferMb, uint32_t, 0);
596 FROMJSON_IMPL(maxPooledBufferObjects, uint32_t, 0);
597 FROMJSON_IMPL(maxActiveBufferObjects, uint32_t, 0);
599 FROMJSON_IMPL(maxActiveRtpProcessors, uint32_t, 0);
604 JSON_SERIALIZED_CLASS(FipsCryptoSettings)
607 IMPLEMENT_JSON_SERIALIZATION()
640 virtual void initForDocumenting()
646 static void to_json(nlohmann::json& j,
const FipsCryptoSettings& p)
649 TOJSON_IMPL(enabled),
656 static void from_json(
const nlohmann::json& j, FipsCryptoSettings& p)
659 FROMJSON_IMPL_SIMPLE(enabled);
660 FROMJSON_IMPL_SIMPLE(path);
661 FROMJSON_IMPL_SIMPLE(debug);
662 FROMJSON_IMPL_SIMPLE(curves);
663 FROMJSON_IMPL_SIMPLE(ciphers);
668 JSON_SERIALIZED_CLASS(WatchdogSettings)
671 IMPLEMENT_JSON_SERIALIZATION()
699 hangDetectionMs = 2000;
701 slowExecutionThresholdMs = 100;
704 virtual void initForDocumenting()
710 static void to_json(nlohmann::json& j,
const WatchdogSettings& p)
713 TOJSON_IMPL(enabled),
714 TOJSON_IMPL(intervalMs),
715 TOJSON_IMPL(hangDetectionMs),
716 TOJSON_IMPL(abortOnHang),
717 TOJSON_IMPL(slowExecutionThresholdMs)
720 static void from_json(
const nlohmann::json& j, WatchdogSettings& p)
723 getOptional<bool>(
"enabled", p.enabled, j,
true);
724 getOptional<int>(
"intervalMs", p.intervalMs, j, 5000);
725 getOptional<int>(
"hangDetectionMs", p.hangDetectionMs, j, 2000);
726 getOptional<bool>(
"abortOnHang", p.abortOnHang, j,
true);
727 getOptional<int>(
"slowExecutionThresholdMs", p.slowExecutionThresholdMs, j, 100);
732 JSON_SERIALIZED_CLASS(FileRecordingRequest)
735 IMPLEMENT_JSON_SERIALIZATION()
740 std::string fileName;
755 virtual void initForDocumenting()
758 id =
"1-2-3-4-5-6-7-8-9";
759 fileName =
"/tmp/test.wav";
768 TOJSON_IMPL(fileName),
772 static void from_json(
const nlohmann::json& j, FileRecordingRequest& p)
775 j.at(
"id").get_to(p.id);
776 j.at(
"fileName").get_to(p.fileName);
777 getOptional<uint32_t>(
"maxMs", p.maxMs, j, 60000);
782 JSON_SERIALIZED_CLASS(Feature)
785 IMPLEMENT_JSON_SERIALIZATION()
786 IMPLEMENT_JSON_DOCUMENTATION(
Feature)
791 std::string description;
792 std::string comments;
811 virtual void initForDocumenting()
814 id =
"{af9540d1-3e86-4fa6-8b80-e26daecb61ab}";
815 name =
"A sample feature";
816 description =
"This is an example of a feature";
817 comments =
"These are comments for this feature";
823 static void to_json(nlohmann::json& j,
const Feature& p)
828 TOJSON_IMPL(description),
829 TOJSON_IMPL(comments),
834 static void from_json(
const nlohmann::json& j, Feature& p)
837 j.at(
"id").get_to(p.id);
838 getOptional(
"name", p.name, j);
839 getOptional(
"description", p.description, j);
840 getOptional(
"comments", p.comments, j);
841 getOptional(
"count", p.count, j, 0);
849 JSON_SERIALIZED_CLASS(Featureset)
852 IMPLEMENT_JSON_SERIALIZATION()
856 std::string signature;
858 std::vector<Feature> features;
868 lockToDeviceId =
false;
872 virtual void initForDocumenting()
875 signature =
"c39df3f36c6444e686e47e70fc45cf91e6ed2d8de62d4a1e89f507d567ff48aaabb1a70e54b44377b46fc4a1a2e319e5b77e4abffc444db98f8eb55d709aad5f";
876 lockToDeviceId =
false;
880 static void to_json(nlohmann::json& j,
const Featureset& p)
883 TOJSON_IMPL(signature),
884 TOJSON_IMPL(lockToDeviceId),
885 TOJSON_IMPL(features)
888 static void from_json(
const nlohmann::json& j, Featureset& p)
891 getOptional(
"signature", p.signature, j);
892 getOptional<bool>(
"lockToDeviceId", p.lockToDeviceId, j,
false);
893 getOptional<std::vector<Feature>>(
"features", p.features, j);
898 JSON_SERIALIZED_CLASS(Agc)
909 IMPLEMENT_JSON_SERIALIZATION()
910 IMPLEMENT_JSON_DOCUMENTATION(
Agc)
941 compressionGainDb = 25;
942 enableLimiter =
false;
947 static void to_json(nlohmann::json& j,
const Agc& p)
950 TOJSON_IMPL(enabled),
951 TOJSON_IMPL(minLevel),
952 TOJSON_IMPL(maxLevel),
953 TOJSON_IMPL(compressionGainDb),
954 TOJSON_IMPL(enableLimiter),
955 TOJSON_IMPL(targetLevelDb)
958 static void from_json(
const nlohmann::json& j, Agc& p)
961 getOptional<bool>(
"enabled", p.enabled, j,
false);
962 getOptional<int>(
"minLevel", p.minLevel, j, 0);
963 getOptional<int>(
"maxLevel", p.maxLevel, j, 255);
964 getOptional<int>(
"compressionGainDb", p.compressionGainDb, j, 25);
965 getOptional<bool>(
"enableLimiter", p.enableLimiter, j,
false);
966 getOptional<int>(
"targetLevelDb", p.targetLevelDb, j, 3);
971 JSON_SERIALIZED_CLASS(RtpPayloadTypeTranslation)
982 IMPLEMENT_JSON_SERIALIZATION()
1003 bool matches(
const RtpPayloadTypeTranslation& other)
1005 return ( (external == other.external) && (engage == other.engage) );
1009 static void to_json(nlohmann::json& j,
const RtpPayloadTypeTranslation& p)
1012 TOJSON_IMPL(external),
1016 static void from_json(
const nlohmann::json& j, RtpPayloadTypeTranslation& p)
1019 getOptional<uint16_t>(
"external", p.external, j);
1020 getOptional<uint16_t>(
"engage", p.engage, j);
1024 JSON_SERIALIZED_CLASS(NetworkInterfaceDevice)
1027 IMPLEMENT_JSON_SERIALIZATION()
1032 std::string friendlyName;
1033 std::string description;
1035 std::string address;
1038 bool supportsMulticast;
1039 std::string hardwareAddress;
1049 friendlyName.clear();
1050 description.clear();
1055 supportsMulticast =
false;
1056 hardwareAddress.clear();
1059 virtual void initForDocumenting()
1063 friendlyName =
"Wi-Fi";
1064 description =
"A wi-fi adapter";
1066 address =
"127.0.0.1";
1069 supportsMulticast =
false;
1070 hardwareAddress =
"DE:AD:BE:EF:01:02:03";
1078 TOJSON_IMPL(friendlyName),
1079 TOJSON_IMPL(description),
1080 TOJSON_IMPL(family),
1081 TOJSON_IMPL(address),
1082 TOJSON_IMPL(available),
1083 TOJSON_IMPL(isLoopback),
1084 TOJSON_IMPL(supportsMulticast),
1085 TOJSON_IMPL(hardwareAddress)
1088 static void from_json(
const nlohmann::json& j, NetworkInterfaceDevice& p)
1091 getOptional(
"name", p.name, j);
1092 getOptional(
"friendlyName", p.friendlyName, j);
1093 getOptional(
"description", p.description, j);
1094 getOptional(
"family", p.family, j, -1);
1095 getOptional(
"address", p.address, j);
1096 getOptional(
"available", p.available, j,
false);
1097 getOptional(
"isLoopback", p.isLoopback, j,
false);
1098 getOptional(
"supportsMulticast", p.supportsMulticast, j,
false);
1099 getOptional(
"hardwareAddress", p.hardwareAddress, j);
1103 JSON_SERIALIZED_CLASS(ListOfNetworkInterfaceDevice)
1106 IMPLEMENT_JSON_SERIALIZATION()
1110 std::vector<NetworkInterfaceDevice> list;
1129 static void from_json(
const nlohmann::json& j, ListOfNetworkInterfaceDevice& p)
1132 getOptional<std::vector<NetworkInterfaceDevice>>(
"list", p.list, j);
1137 JSON_SERIALIZED_CLASS(RtpHeader)
1148 IMPLEMENT_JSON_SERIALIZATION()
1182 virtual void initForDocumenting()
1193 static void to_json(nlohmann::json& j,
const RtpHeader& p)
1199 TOJSON_IMPL(marker),
1206 static void from_json(
const nlohmann::json& j, RtpHeader& p)
1209 getOptional<int>(
"pt", p.pt, j, -1);
1210 getOptional<bool>(
"marker", p.marker, j,
false);
1211 getOptional<uint16_t>(
"seq", p.seq, j, 0);
1212 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
1213 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1217 JSON_SERIALIZED_CLASS(BlobInfo)
1228 IMPLEMENT_JSON_SERIALIZATION()
1229 IMPLEMENT_JSON_DOCUMENTATION(
BlobInfo)
1244 bptJsonTextUtf8 = 2,
1250 bptEngageBinaryHumanBiometrics = 4,
1253 bptAppMimeMessage = 5,
1256 bptEngageInternal = 42
1291 payloadType = PayloadType_t::bptUndefined;
1296 virtual void initForDocumenting()
1299 rtpHeader.initForDocumenting();
1303 static void to_json(nlohmann::json& j,
const BlobInfo& p)
1307 TOJSON_IMPL(source),
1308 TOJSON_IMPL(target),
1309 TOJSON_IMPL(rtpHeader),
1310 TOJSON_IMPL(payloadType),
1312 TOJSON_IMPL(txnTimeoutSecs)
1315 static void from_json(
const nlohmann::json& j, BlobInfo& p)
1318 getOptional<size_t>(
"size", p.size, j, 0);
1319 getOptional<std::string>(
"source", p.source, j, EMPTY_STRING);
1320 getOptional<std::string>(
"target", p.target, j, EMPTY_STRING);
1321 getOptional<RtpHeader>(
"rtpHeader", p.rtpHeader, j);
1322 getOptional<BlobInfo::PayloadType_t>(
"payloadType", p.payloadType, j, BlobInfo::PayloadType_t::bptUndefined);
1323 getOptional<std::string>(
"txnId", p.txnId, j, EMPTY_STRING);
1324 getOptional<int>(
"txnTimeoutSecs", p.txnTimeoutSecs, j, 0);
1329 JSON_SERIALIZED_CLASS(TxAudioUri)
1343 IMPLEMENT_JSON_SERIALIZATION()
1364 virtual void initForDocumenting()
1369 static void to_json(nlohmann::json& j,
const TxAudioUri& p)
1373 TOJSON_IMPL(repeatCount)
1376 static void from_json(
const nlohmann::json& j, TxAudioUri& p)
1379 getOptional<std::string>(
"uri", p.uri, j, EMPTY_STRING);
1380 getOptional<int>(
"repeatCount", p.repeatCount, j, 0);
1385 JSON_SERIALIZED_CLASS(AdvancedTxParams)
1399 IMPLEMENT_JSON_SERIALIZATION()
1447 includeNodeId =
false;
1452 aliasSpecializer = 0;
1453 receiverRxMuteForAliasSpecializer =
false;
1457 virtual void initForDocumenting()
1462 static void to_json(nlohmann::json& j,
const AdvancedTxParams& p)
1466 TOJSON_IMPL(priority),
1467 TOJSON_IMPL(subchannelTag),
1468 TOJSON_IMPL(includeNodeId),
1472 TOJSON_IMPL(audioUri),
1473 TOJSON_IMPL(aliasSpecializer),
1474 TOJSON_IMPL(receiverRxMuteForAliasSpecializer),
1475 TOJSON_IMPL(reBegin)
1478 static void from_json(
const nlohmann::json& j, AdvancedTxParams& p)
1481 getOptional<uint16_t>(
"flags", p.flags, j, 0);
1482 getOptional<uint8_t>(
"priority", p.priority, j, 0);
1483 getOptional<uint16_t>(
"subchannelTag", p.subchannelTag, j, 0);
1484 getOptional<bool>(
"includeNodeId", p.includeNodeId, j,
false);
1485 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
1486 getOptional<bool>(
"muted", p.muted, j,
false);
1487 getOptional<uint32_t>(
"txId", p.txId, j, 0);
1488 getOptional<TxAudioUri>(
"audioUri", p.audioUri, j);
1489 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
1490 getOptional<bool>(
"receiverRxMuteForAliasSpecializer", p.receiverRxMuteForAliasSpecializer, j,
false);
1491 getOptional<bool>(
"reBegin", p.reBegin, j,
false);
1495 JSON_SERIALIZED_CLASS(Identity)
1509 IMPLEMENT_JSON_SERIALIZATION()
1510 IMPLEMENT_JSON_DOCUMENTATION(
Identity)
1540 displayName.clear();
1544 virtual void initForDocumenting()
1549 static void to_json(nlohmann::json& j,
const Identity& p)
1552 TOJSON_IMPL(nodeId),
1553 TOJSON_IMPL(userId),
1554 TOJSON_IMPL(displayName),
1558 static void from_json(
const nlohmann::json& j, Identity& p)
1561 getOptional<std::string>(
"nodeId", p.nodeId, j);
1562 getOptional<std::string>(
"userId", p.userId, j);
1563 getOptional<std::string>(
"displayName", p.displayName, j);
1564 getOptional<std::string>(
"avatar", p.avatar, j);
1569 JSON_SERIALIZED_CLASS(Location)
1583 IMPLEMENT_JSON_SERIALIZATION()
1584 IMPLEMENT_JSON_DOCUMENTATION(
Location)
1587 constexpr static double INVALID_LOCATION_VALUE = -999.999;
1615 latitude = INVALID_LOCATION_VALUE;
1616 longitude = INVALID_LOCATION_VALUE;
1617 altitude = INVALID_LOCATION_VALUE;
1618 direction = INVALID_LOCATION_VALUE;
1619 speed = INVALID_LOCATION_VALUE;
1622 virtual void initForDocumenting()
1628 longitude = 456.789;
1635 static void to_json(nlohmann::json& j,
const Location& p)
1637 if(p.latitude != Location::INVALID_LOCATION_VALUE && p.longitude != Location::INVALID_LOCATION_VALUE)
1640 TOJSON_IMPL(latitude),
1641 TOJSON_IMPL(longitude),
1644 if(p.ts != 0) j[
"ts"] = p.ts;
1645 if(p.altitude != Location::INVALID_LOCATION_VALUE) j[
"altitude"] = p.altitude;
1646 if(p.speed != Location::INVALID_LOCATION_VALUE) j[
"speed"] = p.speed;
1647 if(p.direction != Location::INVALID_LOCATION_VALUE) j[
"direction"] = p.direction;
1650 static void from_json(
const nlohmann::json& j, Location& p)
1653 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1654 j.at(
"latitude").get_to(p.latitude);
1655 j.at(
"longitude").get_to(p.longitude);
1656 getOptional<double>(
"altitude", p.altitude, j, Location::INVALID_LOCATION_VALUE);
1657 getOptional<double>(
"direction", p.direction, j, Location::INVALID_LOCATION_VALUE);
1658 getOptional<double>(
"speed", p.speed, j, Location::INVALID_LOCATION_VALUE);
1662 JSON_SERIALIZED_CLASS(Power)
1674 IMPLEMENT_JSON_SERIALIZATION()
1675 IMPLEMENT_JSON_DOCUMENTATION(
Power)
1721 virtual void initForDocumenting()
1726 static void to_json(nlohmann::json& j,
const Power& p)
1728 if(p.source != 0 && p.state != 0 && p.level != 0)
1731 TOJSON_IMPL(source),
1737 static void from_json(
const nlohmann::json& j, Power& p)
1740 getOptional<int>(
"source", p.source, j, 0);
1741 getOptional<int>(
"state", p.state, j, 0);
1742 getOptional<int>(
"level", p.level, j, 0);
1747 JSON_SERIALIZED_CLASS(Connectivity)
1759 IMPLEMENT_JSON_SERIALIZATION()
1796 virtual void initForDocumenting()
1806 static void to_json(nlohmann::json& j,
const Connectivity& p)
1812 TOJSON_IMPL(strength),
1817 static void from_json(
const nlohmann::json& j, Connectivity& p)
1820 getOptional<int>(
"type", p.type, j, 0);
1821 getOptional<int>(
"strength", p.strength, j, 0);
1822 getOptional<int>(
"rating", p.rating, j, 0);
1827 JSON_SERIALIZED_CLASS(PresenceDescriptorGroupItem)
1839 IMPLEMENT_JSON_SERIALIZATION()
1864 virtual void initForDocumenting()
1866 groupId =
"{123-456}";
1872 static void to_json(nlohmann::json& j,
const PresenceDescriptorGroupItem& p)
1875 TOJSON_IMPL(groupId),
1880 static void from_json(
const nlohmann::json& j, PresenceDescriptorGroupItem& p)
1883 getOptional<std::string>(
"groupId", p.groupId, j);
1884 getOptional<std::string>(
"alias", p.alias, j);
1885 getOptional<uint16_t>(
"status", p.status, j);
1890 JSON_SERIALIZED_CLASS(PresenceDescriptor)
1902 IMPLEMENT_JSON_SERIALIZATION()
1980 groupAliases.clear();
1983 announceOnReceive =
false;
1984 connectivity.clear();
1988 virtual void initForDocumenting()
1995 identity.initForDocumenting();
1996 comment =
"This is a comment";
1999 PresenceDescriptorGroupItem gi;
2000 gi.initForDocumenting();
2001 groupAliases.push_back(gi);
2003 location.initForDocumenting();
2005 announceOnReceive =
true;
2006 connectivity.initForDocumenting();
2007 power.initForDocumenting();
2011 static void to_json(nlohmann::json& j,
const PresenceDescriptor& p)
2015 TOJSON_IMPL(nextUpdate),
2016 TOJSON_IMPL(identity),
2017 TOJSON_IMPL(comment),
2018 TOJSON_IMPL(disposition),
2019 TOJSON_IMPL(groupAliases),
2020 TOJSON_IMPL(location),
2021 TOJSON_IMPL(custom),
2022 TOJSON_IMPL(announceOnReceive),
2023 TOJSON_IMPL(connectivity),
2027 if(!p.comment.empty()) j[
"comment"] = p.comment;
2028 if(!p.custom.empty()) j[
"custom"] = p.custom;
2035 static void from_json(
const nlohmann::json& j, PresenceDescriptor& p)
2038 getOptional<bool>(
"self", p.self, j);
2039 getOptional<uint32_t>(
"ts", p.ts, j);
2040 getOptional<uint32_t>(
"nextUpdate", p.nextUpdate, j);
2041 getOptional<Identity>(
"identity", p.identity, j);
2042 getOptional<std::string>(
"comment", p.comment, j);
2043 getOptional<uint32_t>(
"disposition", p.disposition, j);
2044 getOptional<std::vector<PresenceDescriptorGroupItem>>(
"groupAliases", p.groupAliases, j);
2045 getOptional<Location>(
"location", p.location, j);
2046 getOptional<std::string>(
"custom", p.custom, j);
2047 getOptional<bool>(
"announceOnReceive", p.announceOnReceive, j);
2048 getOptional<Connectivity>(
"connectivity", p.connectivity, j);
2049 getOptional<Power>(
"power", p.power, j);
2090 } AddressResolutionPolicy_t;
2093 JSON_SERIALIZED_CLASS(NetworkTxOptions)
2107 IMPLEMENT_JSON_SERIALIZATION()
2132 virtual void initForDocumenting()
2137 static void to_json(nlohmann::json& j,
const NetworkTxOptions& p)
2140 TOJSON_IMPL(priority),
2144 static void from_json(
const nlohmann::json& j, NetworkTxOptions& p)
2147 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2148 getOptional<int>(
"ttl", p.ttl, j, 1);
2153 JSON_SERIALIZED_CLASS(TcpNetworkTxOptions)
2163 IMPLEMENT_JSON_SERIALIZATION()
2178 virtual void initForDocumenting()
2186 TOJSON_IMPL(priority),
2190 static void from_json(
const nlohmann::json& j, TcpNetworkTxOptions& p)
2193 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2194 getOptional<int>(
"ttl", p.ttl, j, -1);
2210 JSON_SERIALIZED_CLASS(NetworkAddress)
2223 IMPLEMENT_JSON_SERIALIZATION()
2244 bool matches(
const NetworkAddress& other)
2246 if(address.compare(other.address) != 0)
2251 if(port != other.port)
2260 static void to_json(nlohmann::json& j,
const NetworkAddress& p)
2263 TOJSON_IMPL(address),
2267 static void from_json(
const nlohmann::json& j, NetworkAddress& p)
2270 getOptional<std::string>(
"address", p.address, j);
2271 getOptional<int>(
"port", p.port, j);
2276 JSON_SERIALIZED_CLASS(NetworkAddressRxTx)
2289 IMPLEMENT_JSON_SERIALIZATION()
2311 static void to_json(nlohmann::json& j,
const NetworkAddressRxTx& p)
2318 static void from_json(
const nlohmann::json& j, NetworkAddressRxTx& p)
2321 getOptional<NetworkAddress>(
"rx", p.rx, j);
2322 getOptional<NetworkAddress>(
"tx", p.tx, j);
2333 } GroupRestrictionAccessPolicyType_t;
2335 static bool isValidGroupRestrictionAccessPolicyType(GroupRestrictionAccessPolicyType_t t)
2337 return (t == GroupRestrictionAccessPolicyType_t::graptPermissive ||
2338 t == GroupRestrictionAccessPolicyType_t::graptStrict );
2352 } RestrictionType_t;
2354 static bool isValidRestrictionType(RestrictionType_t t)
2356 return (t == RestrictionType_t::rtUndefined ||
2357 t == RestrictionType_t::rtWhitelist ||
2358 t == RestrictionType_t::rtBlacklist );
2384 } RestrictionElementType_t;
2386 static bool isValidRestrictionElementType(RestrictionElementType_t t)
2388 return (t == RestrictionElementType_t::retGroupId ||
2389 t == RestrictionElementType_t::retGroupIdPattern ||
2390 t == RestrictionElementType_t::retGenericAccessTagPattern ||
2391 t == RestrictionElementType_t::retCertificateSerialNumberPattern ||
2392 t == RestrictionElementType_t::retCertificateFingerprintPattern ||
2393 t == RestrictionElementType_t::retCertificateSubjectPattern ||
2394 t == RestrictionElementType_t::retCertificateIssuerPattern);
2399 JSON_SERIALIZED_CLASS(NetworkAddressRestrictionList)
2412 IMPLEMENT_JSON_SERIALIZATION()
2429 type = RestrictionType_t::rtUndefined;
2434 static void to_json(nlohmann::json& j,
const NetworkAddressRestrictionList& p)
2438 TOJSON_IMPL(elements)
2441 static void from_json(
const nlohmann::json& j, NetworkAddressRestrictionList& p)
2444 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2445 getOptional<std::vector<NetworkAddressRxTx>>(
"elements", p.elements, j);
2449 JSON_SERIALIZED_CLASS(StringRestrictionList)
2462 IMPLEMENT_JSON_SERIALIZATION()
2477 type = RestrictionType_t::rtUndefined;
2478 elementsType = RestrictionElementType_t::retGroupId;
2488 static void to_json(nlohmann::json& j,
const StringRestrictionList& p)
2492 TOJSON_IMPL(elementsType),
2493 TOJSON_IMPL(elements)
2496 static void from_json(
const nlohmann::json& j, StringRestrictionList& p)
2499 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2500 getOptional<RestrictionElementType_t>(
"elementsType", p.elementsType, j, RestrictionElementType_t::retGroupId);
2501 getOptional<std::vector<std::string>>(
"elements", p.elements, j);
2506 JSON_SERIALIZED_CLASS(PacketCapturer)
2517 IMPLEMENT_JSON_SERIALIZATION()
2523 std::string filePrefix;
2541 TOJSON_IMPL(enabled),
2543 TOJSON_IMPL(filePrefix)
2546 static void from_json(
const nlohmann::json& j, PacketCapturer& p)
2549 getOptional<bool>(
"enabled", p.enabled, j,
false);
2550 getOptional<uint32_t>(
"maxMb", p.maxMb, j, 10);
2551 getOptional<std::string>(
"filePrefix", p.filePrefix, j, EMPTY_STRING);
2556 JSON_SERIALIZED_CLASS(TransportImpairment)
2567 IMPLEMENT_JSON_SERIALIZATION()
2571 int applicationPercentage;
2582 applicationPercentage = 0;
2591 TOJSON_IMPL(applicationPercentage),
2592 TOJSON_IMPL(jitterMs),
2593 TOJSON_IMPL(lossPercentage)
2596 static void from_json(
const nlohmann::json& j, TransportImpairment& p)
2599 getOptional<int>(
"applicationPercentage", p.applicationPercentage, j, 0);
2600 getOptional<int>(
"jitterMs", p.jitterMs, j, 0);
2601 getOptional<int>(
"lossPercentage", p.lossPercentage, j, 0);
2605 JSON_SERIALIZED_CLASS(NsmNetworking)
2616 IMPLEMENT_JSON_SERIALIZATION()
2620 std::string interfaceName;
2627 std::string cryptoPassword;
2636 interfaceName.clear();
2641 rxImpairment.clear();
2642 txImpairment.clear();
2643 cryptoPassword.clear();
2647 static void to_json(nlohmann::json& j,
const NsmNetworking& p)
2650 TOJSON_IMPL(interfaceName),
2651 TOJSON_IMPL(address),
2654 TOJSON_IMPL(txOversend),
2655 TOJSON_IMPL(rxImpairment),
2656 TOJSON_IMPL(txImpairment),
2657 TOJSON_IMPL(cryptoPassword)
2660 static void from_json(
const nlohmann::json& j, NsmNetworking& p)
2663 getOptional(
"interfaceName", p.interfaceName, j, EMPTY_STRING);
2664 getOptional<NetworkAddress>(
"address", p.address, j);
2665 getOptional<int>(
"ttl", p.ttl, j, 1);
2666 getOptional<int>(
"tos", p.tos, j, 56);
2667 getOptional<int>(
"txOversend", p.txOversend, j, 0);
2668 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
2669 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
2670 getOptional(
"cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
2675 JSON_SERIALIZED_CLASS(NsmConfiguration)
2686 IMPLEMENT_JSON_SERIALIZATION()
2694 std::vector<std::string> resources;
2698 int transitionSecsFactor;
2708 favorUptime =
false;
2711 tokenStart = 1000000;
2714 transitionSecsFactor = 3;
2722 TOJSON_IMPL(favorUptime),
2723 TOJSON_IMPL(networking),
2724 TOJSON_IMPL(resources),
2725 TOJSON_IMPL(tokenStart),
2726 TOJSON_IMPL(tokenEnd),
2727 TOJSON_IMPL(intervalSecs),
2728 TOJSON_IMPL(transitionSecsFactor)
2731 static void from_json(
const nlohmann::json& j, NsmConfiguration& p)
2734 getOptional(
"id", p.id, j);
2735 getOptional<bool>(
"favorUptime", p.favorUptime, j,
false);
2736 getOptional<NsmNetworking>(
"networking", p.networking, j);
2737 getOptional<std::vector<std::string>>(
"resources", p.resources, j);
2738 getOptional<int>(
"tokenStart", p.tokenStart, j, 1000000);
2739 getOptional<int>(
"tokenEnd", p.tokenEnd, j, 2000000);
2740 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
2741 getOptional<int>(
"transitionSecsFactor", p.transitionSecsFactor, j, 3);
2746 JSON_SERIALIZED_CLASS(Rallypoint)
2756 IMPLEMENT_JSON_SERIALIZATION()
2865 certificate.clear();
2866 certificateKey.clear();
2867 caCertificates.clear();
2869 transactionTimeoutMs = 0;
2870 disableMessageSigning =
false;
2871 connectionTimeoutSecs = 0;
2872 tcpTxOptions.clear();
2874 protocol = rppTlsTcp;
2876 additionalProtocols.clear();
2879 bool matches(
const Rallypoint& other)
2881 if(!host.matches(other.host))
2886 if(protocol != other.protocol)
2891 if(path.compare(other.path) != 0)
2896 if(certificate.compare(other.certificate) != 0)
2901 if(certificateKey.compare(other.certificateKey) != 0)
2906 if(verifyPeer != other.verifyPeer)
2911 if(allowSelfSignedCertificate != other.allowSelfSignedCertificate)
2916 if(caCertificates.size() != other.caCertificates.size())
2921 for(
size_t x = 0; x < caCertificates.size(); x++)
2925 for(
size_t y = 0; y < other.caCertificates.size(); y++)
2927 if(caCertificates[x].compare(other.caCertificates[y]) == 0)
2940 if(transactionTimeoutMs != other.transactionTimeoutMs)
2945 if(disableMessageSigning != other.disableMessageSigning)
2949 if(connectionTimeoutSecs != other.connectionTimeoutSecs)
2953 if(tcpTxOptions.
priority != other.tcpTxOptions.priority)
2957 if(sni.compare(other.sni) != 0)
2966 static void to_json(nlohmann::json& j,
const Rallypoint& p)
2970 TOJSON_IMPL(certificate),
2971 TOJSON_IMPL(certificateKey),
2972 TOJSON_IMPL(verifyPeer),
2973 TOJSON_IMPL(allowSelfSignedCertificate),
2974 TOJSON_IMPL(caCertificates),
2975 TOJSON_IMPL(transactionTimeoutMs),
2976 TOJSON_IMPL(disableMessageSigning),
2977 TOJSON_IMPL(connectionTimeoutSecs),
2978 TOJSON_IMPL(tcpTxOptions),
2980 TOJSON_IMPL(protocol),
2982 TOJSON_IMPL(additionalProtocols)
2986 static void from_json(
const nlohmann::json& j, Rallypoint& p)
2989 j.at(
"host").get_to(p.host);
2990 getOptional(
"certificate", p.certificate, j);
2991 getOptional(
"certificateKey", p.certificateKey, j);
2992 getOptional<bool>(
"verifyPeer", p.verifyPeer, j,
true);
2993 getOptional<bool>(
"allowSelfSignedCertificate", p.allowSelfSignedCertificate, j,
false);
2994 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
2995 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 0);
2996 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
2997 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
2998 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
2999 getOptional<std::string>(
"sni", p.sni, j);
3000 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
3001 getOptional<std::string>(
"path", p.path, j);
3002 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
3006 JSON_SERIALIZED_CLASS(RallypointCluster)
3019 IMPLEMENT_JSON_SERIALIZATION()
3035 } ConnectionStrategy_t;
3059 connectionStrategy = csRoundRobin;
3060 rallypoints.clear();
3062 connectionTimeoutSecs = 5;
3063 transactionTimeoutMs = 10000;
3067 static void to_json(nlohmann::json& j,
const RallypointCluster& p)
3070 TOJSON_IMPL(connectionStrategy),
3071 TOJSON_IMPL(rallypoints),
3072 TOJSON_IMPL(rolloverSecs),
3073 TOJSON_IMPL(connectionTimeoutSecs),
3074 TOJSON_IMPL(transactionTimeoutMs)
3077 static void from_json(
const nlohmann::json& j, RallypointCluster& p)
3080 getOptional<RallypointCluster::ConnectionStrategy_t>(
"connectionStrategy", p.connectionStrategy, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
3081 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
3082 getOptional<int>(
"rolloverSecs", p.rolloverSecs, j, 10);
3083 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
3084 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 10000);
3089 JSON_SERIALIZED_CLASS(NetworkDeviceDescriptor)
3101 IMPLEMENT_JSON_SERIALIZATION()
3142 manufacturer.clear();
3145 serialNumber.clear();
3150 virtual std::string toString()
3154 snprintf(buff,
sizeof(buff),
"deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
3157 manufacturer.c_str(),
3160 serialNumber.c_str(),
3164 return std::string(buff);
3168 static void to_json(nlohmann::json& j,
const NetworkDeviceDescriptor& p)
3171 TOJSON_IMPL(deviceId),
3173 TOJSON_IMPL(manufacturer),
3175 TOJSON_IMPL(hardwareId),
3176 TOJSON_IMPL(serialNumber),
3181 static void from_json(
const nlohmann::json& j, NetworkDeviceDescriptor& p)
3184 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3185 getOptional(
"name", p.name, j);
3186 getOptional(
"manufacturer", p.manufacturer, j);
3187 getOptional(
"model", p.model, j);
3188 getOptional(
"hardwareId", p.hardwareId, j);
3189 getOptional(
"serialNumber", p.serialNumber, j);
3190 getOptional(
"type", p.type, j);
3191 getOptional(
"extra", p.extra, j);
3195 JSON_SERIALIZED_CLASS(AudioGate)
3206 IMPLEMENT_JSON_SERIALIZATION()
3245 static void to_json(nlohmann::json& j,
const AudioGate& p)
3248 TOJSON_IMPL(enabled),
3249 TOJSON_IMPL(useVad),
3250 TOJSON_IMPL(hangMs),
3251 TOJSON_IMPL(windowMin),
3252 TOJSON_IMPL(windowMax),
3253 TOJSON_IMPL(coefficient)
3256 static void from_json(
const nlohmann::json& j, AudioGate& p)
3259 getOptional<bool>(
"enabled", p.enabled, j,
false);
3260 getOptional<bool>(
"useVad", p.useVad, j,
false);
3261 getOptional<uint32_t>(
"hangMs", p.hangMs, j, 1500);
3262 getOptional<uint32_t>(
"windowMin", p.windowMin, j, 25);
3263 getOptional<uint32_t>(
"windowMax", p.windowMax, j, 125);
3264 getOptional<double>(
"coefficient", p.coefficient, j, 1.75);
3268 JSON_SERIALIZED_CLASS(TxAudio)
3283 IMPLEMENT_JSON_SERIALIZATION()
3284 IMPLEMENT_JSON_DOCUMENTATION(
TxAudio)
3520 encoder = TxAudio::TxCodec_t::ctUnknown;
3521 encoderName.clear();
3527 extensionSendInterval = 10;
3528 initialHeaderBurst = 5;
3529 trailingHeaderBurst = 5;
3530 startTxNotifications = 5;
3531 customRtpPayloadType = -1;
3533 resetRtpOnTx =
true;
3534 enableSmoothing =
true;
3536 smoothedHangTimeMs = 0;
3540 static void to_json(nlohmann::json& j,
const TxAudio& p)
3543 TOJSON_IMPL(enabled),
3544 TOJSON_IMPL(encoder),
3545 TOJSON_IMPL(encoderName),
3546 TOJSON_IMPL(framingMs),
3547 TOJSON_IMPL(blockCount),
3549 TOJSON_IMPL(noHdrExt),
3550 TOJSON_IMPL(maxTxSecs),
3551 TOJSON_IMPL(extensionSendInterval),
3552 TOJSON_IMPL(initialHeaderBurst),
3553 TOJSON_IMPL(trailingHeaderBurst),
3554 TOJSON_IMPL(startTxNotifications),
3555 TOJSON_IMPL(customRtpPayloadType),
3556 TOJSON_IMPL(resetRtpOnTx),
3557 TOJSON_IMPL(enableSmoothing),
3559 TOJSON_IMPL(smoothedHangTimeMs)
3564 static void from_json(
const nlohmann::json& j, TxAudio& p)
3567 getOptional<bool>(
"enabled", p.enabled, j,
true);
3568 getOptional<TxAudio::TxCodec_t>(
"encoder", p.encoder, j, TxAudio::TxCodec_t::ctOpus8000);
3569 getOptional<std::string>(
"encoderName", p.encoderName, j, EMPTY_STRING);
3570 getOptional(
"framingMs", p.framingMs, j, 60);
3571 getOptional(
"blockCount", p.blockCount, j, 0);
3572 getOptional(
"fdx", p.fdx, j,
false);
3573 getOptional(
"noHdrExt", p.noHdrExt, j,
false);
3574 getOptional(
"maxTxSecs", p.maxTxSecs, j, 0);
3575 getOptional(
"extensionSendInterval", p.extensionSendInterval, j, 10);
3576 getOptional(
"initialHeaderBurst", p.initialHeaderBurst, j, 5);
3577 getOptional(
"trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3578 getOptional(
"startTxNotifications", p.startTxNotifications, j, 5);
3579 getOptional(
"customRtpPayloadType", p.customRtpPayloadType, j, -1);
3580 getOptional(
"resetRtpOnTx", p.resetRtpOnTx, j,
true);
3581 getOptional(
"enableSmoothing", p.enableSmoothing, j,
true);
3582 getOptional(
"dtx", p.dtx, j,
false);
3583 getOptional(
"smoothedHangTimeMs", p.smoothedHangTimeMs, j, 0);
3589 JSON_SERIALIZED_CLASS(AudioRegistryDevice)
3601 IMPLEMENT_JSON_SERIALIZATION()
3640 manufacturer.clear();
3642 serialNumber.clear();
3647 virtual std::string toString()
3651 snprintf(buff,
sizeof(buff),
"hardwareId=%s, isDefault=%d, name=%s, manufacturer=%s, model=%s, serialNumber=%s, type=%s, extra=%s",
3655 manufacturer.c_str(),
3657 serialNumber.c_str(),
3661 return std::string(buff);
3665 static void to_json(nlohmann::json& j,
const AudioRegistryDevice& p)
3668 TOJSON_IMPL(hardwareId),
3669 TOJSON_IMPL(isDefault),
3671 TOJSON_IMPL(manufacturer),
3673 TOJSON_IMPL(serialNumber),
3678 static void from_json(
const nlohmann::json& j, AudioRegistryDevice& p)
3681 getOptional<std::string>(
"hardwareId", p.hardwareId, j, EMPTY_STRING);
3682 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
3683 getOptional(
"name", p.name, j);
3684 getOptional(
"manufacturer", p.manufacturer, j);
3685 getOptional(
"model", p.model, j);
3686 getOptional(
"serialNumber", p.serialNumber, j);
3687 getOptional(
"type", p.type, j);
3688 getOptional(
"extra", p.extra, j);
3693 JSON_SERIALIZED_CLASS(AudioRegistry)
3705 IMPLEMENT_JSON_SERIALIZATION()
3726 virtual std::string toString()
3728 return std::string(
"");
3732 static void to_json(nlohmann::json& j,
const AudioRegistry& p)
3735 TOJSON_IMPL(inputs),
3736 TOJSON_IMPL(outputs)
3739 static void from_json(
const nlohmann::json& j, AudioRegistry& p)
3742 getOptional<std::vector<AudioRegistryDevice>>(
"inputs", p.inputs, j);
3743 getOptional<std::vector<AudioRegistryDevice>>(
"outputs", p.outputs, j);
3747 JSON_SERIALIZED_CLASS(AudioDeviceDescriptor)
3759 IMPLEMENT_JSON_SERIALIZATION()
3853 direction = dirUnknown;
3854 boostPercentage = 0;
3859 manufacturer.clear();
3862 serialNumber.clear();
3868 virtual std::string toString()
3872 snprintf(buff,
sizeof(buff),
"deviceId=%d, samplingRate=%d, channels=%d, direction=%d, boostPercentage=%d, isAdad=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, isDefault=%d, type=%s, present=%d, extra=%s",
3880 manufacturer.c_str(),
3883 serialNumber.c_str(),
3889 return std::string(buff);
3893 static void to_json(nlohmann::json& j,
const AudioDeviceDescriptor& p)
3896 TOJSON_IMPL(deviceId),
3897 TOJSON_IMPL(samplingRate),
3898 TOJSON_IMPL(channels),
3899 TOJSON_IMPL(direction),
3900 TOJSON_IMPL(boostPercentage),
3901 TOJSON_IMPL(isAdad),
3903 TOJSON_IMPL(manufacturer),
3905 TOJSON_IMPL(hardwareId),
3906 TOJSON_IMPL(serialNumber),
3907 TOJSON_IMPL(isDefault),
3910 TOJSON_IMPL(isPresent)
3913 static void from_json(
const nlohmann::json& j, AudioDeviceDescriptor& p)
3916 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3917 getOptional<int>(
"samplingRate", p.samplingRate, j, 0);
3918 getOptional<int>(
"channels", p.channels, j, 0);
3919 getOptional<AudioDeviceDescriptor::Direction_t>(
"direction", p.direction, j,
3920 AudioDeviceDescriptor::Direction_t::dirUnknown);
3921 getOptional<int>(
"boostPercentage", p.boostPercentage, j, 0);
3923 getOptional<bool>(
"isAdad", p.isAdad, j,
false);
3924 getOptional(
"name", p.name, j);
3925 getOptional(
"manufacturer", p.manufacturer, j);
3926 getOptional(
"model", p.model, j);
3927 getOptional(
"hardwareId", p.hardwareId, j);
3928 getOptional(
"serialNumber", p.serialNumber, j);
3929 getOptional(
"isDefault", p.isDefault, j);
3930 getOptional(
"type", p.type, j);
3931 getOptional(
"extra", p.extra, j);
3932 getOptional<bool>(
"isPresent", p.isPresent, j,
false);
3936 JSON_SERIALIZED_CLASS(ListOfAudioDeviceDescriptor)
3939 IMPLEMENT_JSON_SERIALIZATION()
3943 std::vector<AudioDeviceDescriptor> list;
3962 static void from_json(
const nlohmann::json& j, ListOfAudioDeviceDescriptor& p)
3965 getOptional<std::vector<AudioDeviceDescriptor>>(
"list", p.list, j);
3969 JSON_SERIALIZED_CLASS(Audio)
3979 IMPLEMENT_JSON_SERIALIZATION()
3980 IMPLEMENT_JSON_DOCUMENTATION(
Audio)
4022 inputHardwareId.clear();
4025 outputHardwareId.clear();
4027 outputLevelLeft = 100;
4028 outputLevelRight = 100;
4029 outputMuted =
false;
4033 static void to_json(nlohmann::json& j,
const Audio& p)
4036 TOJSON_IMPL(enabled),
4037 TOJSON_IMPL(inputId),
4038 TOJSON_IMPL(inputHardwareId),
4039 TOJSON_IMPL(inputGain),
4040 TOJSON_IMPL(outputId),
4041 TOJSON_IMPL(outputHardwareId),
4042 TOJSON_IMPL(outputLevelLeft),
4043 TOJSON_IMPL(outputLevelRight),
4044 TOJSON_IMPL(outputMuted)
4047 static void from_json(
const nlohmann::json& j, Audio& p)
4050 getOptional<bool>(
"enabled", p.enabled, j,
true);
4051 getOptional<int>(
"inputId", p.inputId, j, 0);
4052 getOptional<std::string>(
"inputHardwareId", p.inputHardwareId, j, EMPTY_STRING);
4053 getOptional<int>(
"inputGain", p.inputGain, j, 0);
4054 getOptional<int>(
"outputId", p.outputId, j, 0);
4055 getOptional<std::string>(
"outputHardwareId", p.outputHardwareId, j, EMPTY_STRING);
4056 getOptional<int>(
"outputGain", p.outputGain, j, 0);
4057 getOptional<int>(
"outputLevelLeft", p.outputLevelLeft, j, 100);
4058 getOptional<int>(
"outputLevelRight", p.outputLevelRight, j, 100);
4059 getOptional<bool>(
"outputMuted", p.outputMuted, j,
false);
4063 JSON_SERIALIZED_CLASS(TalkerInformation)
4075 IMPLEMENT_JSON_SERIALIZATION()
4091 matSsrcGenerated = 2
4092 } ManufacturedAliasType_t;
4137 aliasSpecializer = 0;
4139 manufacturedAliasType = ManufacturedAliasType_t::matNone;
4144 static void to_json(nlohmann::json& j,
const TalkerInformation& p)
4148 TOJSON_IMPL(nodeId),
4149 TOJSON_IMPL(rxFlags),
4150 TOJSON_IMPL(txPriority),
4152 TOJSON_IMPL(duplicateCount),
4153 TOJSON_IMPL(aliasSpecializer),
4154 TOJSON_IMPL(rxMuted),
4155 TOJSON_IMPL(manufacturedAliasType),
4159 static void from_json(
const nlohmann::json& j, TalkerInformation& p)
4162 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
4163 getOptional<std::string>(
"nodeId", p.nodeId, j, EMPTY_STRING);
4164 getOptional<uint16_t>(
"rxFlags", p.rxFlags, j, 0);
4165 getOptional<int>(
"txPriority", p.txPriority, j, 0);
4166 getOptional<uint32_t>(
"txId", p.txId, j, 0);
4167 getOptional<int>(
"duplicateCount", p.duplicateCount, j, 0);
4168 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
4169 getOptional<bool>(
"rxMuted", p.rxMuted, j,
false);
4170 getOptional<TalkerInformation::ManufacturedAliasType_t>(
"manufacturedAliasType", p.manufacturedAliasType, j, TalkerInformation::ManufacturedAliasType_t::matNone);
4171 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
4175 JSON_SERIALIZED_CLASS(GroupTalkers)
4189 IMPLEMENT_JSON_SERIALIZATION()
4194 std::vector<TalkerInformation>
list;
4207 static void to_json(nlohmann::json& j,
const GroupTalkers& p)
4213 static void from_json(
const nlohmann::json& j, GroupTalkers& p)
4216 getOptional<std::vector<TalkerInformation>>(
"list", p.list, j);
4220 JSON_SERIALIZED_CLASS(Presence)
4232 IMPLEMENT_JSON_SERIALIZATION()
4233 IMPLEMENT_JSON_DOCUMENTATION(
Presence)
4281 minIntervalSecs = 5;
4282 reduceImmediacy =
false;
4286 static void to_json(nlohmann::json& j,
const Presence& p)
4289 TOJSON_IMPL(format),
4290 TOJSON_IMPL(intervalSecs),
4291 TOJSON_IMPL(listenOnly),
4292 TOJSON_IMPL(minIntervalSecs),
4293 TOJSON_IMPL(reduceImmediacy)
4296 static void from_json(
const nlohmann::json& j, Presence& p)
4299 getOptional<Presence::Format_t>(
"format", p.format, j, Presence::Format_t::pfEngage);
4300 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 30);
4301 getOptional<bool>(
"listenOnly", p.listenOnly, j,
false);
4302 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 5);
4303 getOptional<bool>(
"reduceImmediacy", p.reduceImmediacy, j,
false);
4308 JSON_SERIALIZED_CLASS(Advertising)
4320 IMPLEMENT_JSON_SERIALIZATION()
4342 alwaysAdvertise =
false;
4346 static void to_json(nlohmann::json& j,
const Advertising& p)
4349 TOJSON_IMPL(enabled),
4350 TOJSON_IMPL(intervalMs),
4351 TOJSON_IMPL(alwaysAdvertise)
4354 static void from_json(
const nlohmann::json& j, Advertising& p)
4357 getOptional(
"enabled", p.enabled, j,
false);
4358 getOptional<int>(
"intervalMs", p.intervalMs, j, 20000);
4359 getOptional<bool>(
"alwaysAdvertise", p.alwaysAdvertise, j,
false);
4363 JSON_SERIALIZED_CLASS(GroupPriorityTranslation)
4375 IMPLEMENT_JSON_SERIALIZATION()
4401 static void to_json(nlohmann::json& j,
const GroupPriorityTranslation& p)
4406 TOJSON_IMPL(priority)
4409 static void from_json(
const nlohmann::json& j, GroupPriorityTranslation& p)
4412 j.at(
"rx").get_to(p.rx);
4413 j.at(
"tx").get_to(p.tx);
4414 FROMJSON_IMPL(priority,
int, 0);
4418 JSON_SERIALIZED_CLASS(GroupTimeline)
4432 IMPLEMENT_JSON_SERIALIZATION()
4451 maxAudioTimeMs = 30000;
4456 static void to_json(nlohmann::json& j,
const GroupTimeline& p)
4459 TOJSON_IMPL(enabled),
4460 TOJSON_IMPL(maxAudioTimeMs),
4461 TOJSON_IMPL(recordAudio)
4464 static void from_json(
const nlohmann::json& j, GroupTimeline& p)
4467 getOptional(
"enabled", p.enabled, j,
true);
4468 getOptional<int>(
"maxAudioTimeMs", p.maxAudioTimeMs, j, 30000);
4469 getOptional(
"recordAudio", p.recordAudio, j,
true);
4572 IMPLEMENT_JSON_SERIALIZATION()
4594 static void to_json(nlohmann::json& j,
const GroupAppTransport& p)
4597 TOJSON_IMPL(enabled),
4601 static void from_json(
const nlohmann::json& j, GroupAppTransport& p)
4604 getOptional<bool>(
"enabled", p.enabled, j,
false);
4605 getOptional<std::string>(
"id", p.id, j);
4609 JSON_SERIALIZED_CLASS(RtpProfile)
4621 IMPLEMENT_JSON_SERIALIZATION()
4639 jmReleaseOnTxEnd = 2
4702 jitterMaxMs = 10000;
4704 jitterMaxFactor = 8;
4705 jitterTrimPercentage = 10;
4706 jitterUnderrunReductionThresholdMs = 1500;
4707 jitterUnderrunReductionAger = 100;
4708 latePacketSequenceRange = 5;
4709 latePacketTimestampRangeMs = 2000;
4710 inboundProcessorInactivityMs = 500;
4711 jitterForceTrimAtMs = 0;
4712 rtcpPresenceTimeoutMs = 45000;
4713 jitterMaxExceededClipPerc = 10;
4714 jitterMaxExceededClipHangMs = 1500;
4715 zombieLifetimeMs = 15000;
4716 jitterMaxTrimMs = 250;
4717 signalledInboundProcessorInactivityMs = (inboundProcessorInactivityMs * 4);
4721 static void to_json(nlohmann::json& j,
const RtpProfile& p)
4725 TOJSON_IMPL(jitterMaxMs),
4726 TOJSON_IMPL(inboundProcessorInactivityMs),
4727 TOJSON_IMPL(jitterMinMs),
4728 TOJSON_IMPL(jitterMaxFactor),
4729 TOJSON_IMPL(jitterTrimPercentage),
4730 TOJSON_IMPL(jitterUnderrunReductionThresholdMs),
4731 TOJSON_IMPL(jitterUnderrunReductionAger),
4732 TOJSON_IMPL(latePacketSequenceRange),
4733 TOJSON_IMPL(latePacketTimestampRangeMs),
4734 TOJSON_IMPL(inboundProcessorInactivityMs),
4735 TOJSON_IMPL(jitterForceTrimAtMs),
4736 TOJSON_IMPL(jitterMaxExceededClipPerc),
4737 TOJSON_IMPL(jitterMaxExceededClipHangMs),
4738 TOJSON_IMPL(zombieLifetimeMs),
4739 TOJSON_IMPL(jitterMaxTrimMs),
4740 TOJSON_IMPL(signalledInboundProcessorInactivityMs)
4743 static void from_json(
const nlohmann::json& j, RtpProfile& p)
4746 FROMJSON_IMPL(mode, RtpProfile::JitterMode_t, RtpProfile::JitterMode_t::jmStandard);
4747 FROMJSON_IMPL(jitterMaxMs,
int, 10000);
4748 FROMJSON_IMPL(jitterMinMs,
int, 20);
4749 FROMJSON_IMPL(jitterMaxFactor,
int, 8);
4750 FROMJSON_IMPL(jitterTrimPercentage,
int, 10);
4751 FROMJSON_IMPL(jitterUnderrunReductionThresholdMs,
int, 1500);
4752 FROMJSON_IMPL(jitterUnderrunReductionAger,
int, 100);
4753 FROMJSON_IMPL(latePacketSequenceRange,
int, 5);
4754 FROMJSON_IMPL(latePacketTimestampRangeMs,
int, 2000);
4755 FROMJSON_IMPL(inboundProcessorInactivityMs,
int, 500);
4756 FROMJSON_IMPL(jitterForceTrimAtMs,
int, 0);
4757 FROMJSON_IMPL(rtcpPresenceTimeoutMs,
int, 45000);
4758 FROMJSON_IMPL(jitterMaxExceededClipPerc,
int, 10);
4759 FROMJSON_IMPL(jitterMaxExceededClipHangMs,
int, 1500);
4760 FROMJSON_IMPL(zombieLifetimeMs,
int, 15000);
4761 FROMJSON_IMPL(jitterMaxTrimMs,
int, 250);
4762 FROMJSON_IMPL(signalledInboundProcessorInactivityMs,
int, (p.inboundProcessorInactivityMs * 4));
4766 JSON_SERIALIZED_CLASS(Tls)
4778 IMPLEMENT_JSON_SERIALIZATION()
4779 IMPLEMENT_JSON_DOCUMENTATION(
Tls)
4809 allowSelfSignedCertificates =
false;
4810 caCertificates.clear();
4811 subjectRestrictions.clear();
4812 issuerRestrictions.clear();
4817 static void to_json(nlohmann::json& j,
const Tls& p)
4820 TOJSON_IMPL(verifyPeers),
4821 TOJSON_IMPL(allowSelfSignedCertificates),
4822 TOJSON_IMPL(caCertificates),
4823 TOJSON_IMPL(subjectRestrictions),
4824 TOJSON_IMPL(issuerRestrictions),
4825 TOJSON_IMPL(crlSerials)
4828 static void from_json(
const nlohmann::json& j, Tls& p)
4831 getOptional<bool>(
"verifyPeers", p.verifyPeers, j,
true);
4832 getOptional<bool>(
"allowSelfSignedCertificates", p.allowSelfSignedCertificates, j,
false);
4833 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
4834 getOptional<StringRestrictionList>(
"subjectRestrictions", p.subjectRestrictions, j);
4835 getOptional<StringRestrictionList>(
"issuerRestrictions", p.issuerRestrictions, j);
4836 getOptional<std::vector<std::string>>(
"crlSerials", p.crlSerials, j);
4840 JSON_SERIALIZED_CLASS(RangerPackets)
4854 IMPLEMENT_JSON_SERIALIZATION()
4875 virtual void initForDocumenting()
4880 static void to_json(nlohmann::json& j,
const RangerPackets& p)
4883 TOJSON_IMPL(hangTimerSecs),
4887 static void from_json(
const nlohmann::json& j, RangerPackets& p)
4890 getOptional<int>(
"hangTimerSecs", p.hangTimerSecs, j, 11);
4891 getOptional<int>(
"count", p.count, j, 5);
4895 JSON_SERIALIZED_CLASS(Source)
4909 IMPLEMENT_JSON_SERIALIZATION()
4910 IMPLEMENT_JSON_DOCUMENTATION(
Source)
4917 uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
4923 uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
4933 memset(_internal_binary_nodeId, 0,
sizeof(_internal_binary_nodeId));
4936 memset(_internal_binary_alias, 0,
sizeof(_internal_binary_alias));
4939 virtual void initForDocumenting()
4944 static void to_json(nlohmann::json& j,
const Source& p)
4947 TOJSON_IMPL(nodeId),
4951 static void from_json(
const nlohmann::json& j, Source& p)
4954 FROMJSON_IMPL_SIMPLE(nodeId);
4955 FROMJSON_IMPL_SIMPLE(alias);
4959 JSON_SERIALIZED_CLASS(GroupBridgeTargetOutputDetail)
4973 IMPLEMENT_JSON_SERIALIZATION()
5010 mode = BridgingOpMode_t::bomRaw;
5011 mixedStreamTxParams.clear();
5014 virtual void initForDocumenting()
5020 static void to_json(nlohmann::json& j,
const GroupBridgeTargetOutputDetail& p)
5024 TOJSON_IMPL(mixedStreamTxParams)
5027 static void from_json(
const nlohmann::json& j, GroupBridgeTargetOutputDetail& p)
5030 FROMJSON_IMPL_SIMPLE(mode);
5031 FROMJSON_IMPL_SIMPLE(mixedStreamTxParams);
5035 JSON_SERIALIZED_CLASS(GroupDefaultAudioPriority)
5049 IMPLEMENT_JSON_SERIALIZATION()
5070 virtual void initForDocumenting()
5076 static void to_json(nlohmann::json& j,
const GroupDefaultAudioPriority& p)
5083 static void from_json(
const nlohmann::json& j, GroupDefaultAudioPriority& p)
5086 FROMJSON_IMPL_SIMPLE(tx);
5087 FROMJSON_IMPL_SIMPLE(rx);
5091 JSON_SERIALIZED_CLASS(Group)
5104 IMPLEMENT_JSON_SERIALIZATION()
5105 IMPLEMENT_JSON_DOCUMENTATION(
Group)
5128 iagpAnonymousAlias = 0,
5132 } InboundAliasGenerationPolicy_t;
5307 bridgeTargetOutputDetail.clear();
5308 defaultAudioPriority.clear();
5312 interfaceName.clear();
5318 cryptoPassword.clear();
5322 rallypoints.clear();
5323 rallypointCluster.clear();
5328 blockAdvertising =
false;
5334 enableMulticastFailover =
false;
5335 multicastFailoverSecs = 10;
5337 rtcpPresenceRx.clear();
5339 presenceGroupAffinities.clear();
5340 disablePacketEvents =
false;
5342 rfc4733RtpPayloadId = 0;
5343 inboundRtpPayloadTypeTranslations.clear();
5344 priorityTranslation.clear();
5346 stickyTidHangSecs = 10;
5347 anonymousAlias.clear();
5350 appTransport.clear();
5351 allowLoopback =
false;
5354 rangerPackets.clear();
5356 _wasDeserialized_rtpProfile =
false;
5358 txImpairment.clear();
5359 rxImpairment.clear();
5361 specializerAffinities.clear();
5365 ignoreSources.clear();
5367 languageCode.clear();
5374 inboundAliasGenerationPolicy = iagpAnonymousAlias;
5377 ignoreAudioTraffic =
false;
5381 static void to_json(nlohmann::json& j,
const Group& p)
5385 TOJSON_IMPL(bridgeTargetOutputDetail),
5386 TOJSON_IMPL(defaultAudioPriority),
5389 TOJSON_IMPL(spokenName),
5390 TOJSON_IMPL(interfaceName),
5393 TOJSON_IMPL(txOptions),
5394 TOJSON_IMPL(txAudio),
5395 TOJSON_IMPL(presence),
5396 TOJSON_IMPL(cryptoPassword),
5405 TOJSON_IMPL(timeline),
5406 TOJSON_IMPL(blockAdvertising),
5407 TOJSON_IMPL(source),
5408 TOJSON_IMPL(maxRxSecs),
5409 TOJSON_IMPL(enableMulticastFailover),
5410 TOJSON_IMPL(multicastFailoverSecs),
5411 TOJSON_IMPL(rtcpPresenceRx),
5412 TOJSON_IMPL(presenceGroupAffinities),
5413 TOJSON_IMPL(disablePacketEvents),
5414 TOJSON_IMPL(rfc4733RtpPayloadId),
5415 TOJSON_IMPL(inboundRtpPayloadTypeTranslations),
5416 TOJSON_IMPL(priorityTranslation),
5417 TOJSON_IMPL(stickyTidHangSecs),
5418 TOJSON_IMPL(anonymousAlias),
5419 TOJSON_IMPL(lbCrypto),
5420 TOJSON_IMPL(appTransport),
5421 TOJSON_IMPL(allowLoopback),
5422 TOJSON_IMPL(rangerPackets),
5424 TOJSON_IMPL(txImpairment),
5425 TOJSON_IMPL(rxImpairment),
5427 TOJSON_IMPL(specializerAffinities),
5429 TOJSON_IMPL(securityLevel),
5431 TOJSON_IMPL(ignoreSources),
5433 TOJSON_IMPL(languageCode),
5434 TOJSON_IMPL(synVoice),
5436 TOJSON_IMPL(rxCapture),
5437 TOJSON_IMPL(txCapture),
5439 TOJSON_IMPL(blobRtpPayloadType),
5441 TOJSON_IMPL(inboundAliasGenerationPolicy),
5443 TOJSON_IMPL(gateIn),
5445 TOJSON_IMPL(ignoreAudioTraffic)
5451 if(p._wasDeserialized_rtpProfile || p.isDocumenting())
5453 j[
"rtpProfile"] = p.rtpProfile;
5456 if(p.isDocumenting())
5458 j[
"rallypointCluster"] = p.rallypointCluster;
5459 j[
"rallypoints"] = p.rallypoints;
5464 if(!p.rallypointCluster.rallypoints.empty())
5466 j[
"rallypointCluster"] = p.rallypointCluster;
5468 else if(!p.rallypoints.empty())
5470 j[
"rallypoints"] = p.rallypoints;
5474 static void from_json(
const nlohmann::json& j, Group& p)
5477 j.at(
"type").get_to(p.type);
5478 getOptional<GroupBridgeTargetOutputDetail>(
"bridgeTargetOutputDetail", p.bridgeTargetOutputDetail, j);
5479 j.at(
"id").get_to(p.id);
5480 getOptional<std::string>(
"name", p.name, j);
5481 getOptional<std::string>(
"spokenName", p.spokenName, j);
5482 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
5483 getOptional<NetworkAddress>(
"rx", p.rx, j);
5484 getOptional<NetworkAddress>(
"tx", p.tx, j);
5485 getOptional<NetworkTxOptions>(
"txOptions", p.txOptions, j);
5486 getOptional<std::string>(
"cryptoPassword", p.cryptoPassword, j);
5487 getOptional<std::string>(
"alias", p.alias, j);
5488 getOptional<TxAudio>(
"txAudio", p.txAudio, j);
5489 getOptional<Presence>(
"presence", p.presence, j);
5490 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
5491 getOptional<RallypointCluster>(
"rallypointCluster", p.rallypointCluster, j);
5492 getOptional<Audio>(
"audio", p.audio, j);
5493 getOptional<GroupTimeline>(
"timeline", p.timeline, j);
5494 getOptional<bool>(
"blockAdvertising", p.blockAdvertising, j,
false);
5495 getOptional<std::string>(
"source", p.source, j);
5496 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
5497 getOptional<bool>(
"enableMulticastFailover", p.enableMulticastFailover, j,
false);
5498 getOptional<int>(
"multicastFailoverSecs", p.multicastFailoverSecs, j, 10);
5499 getOptional<NetworkAddress>(
"rtcpPresenceRx", p.rtcpPresenceRx, j);
5500 getOptional<std::vector<std::string>>(
"presenceGroupAffinities", p.presenceGroupAffinities, j);
5501 getOptional<bool>(
"disablePacketEvents", p.disablePacketEvents, j,
false);
5502 getOptional<int>(
"rfc4733RtpPayloadId", p.rfc4733RtpPayloadId, j, 0);
5503 getOptional<std::vector<RtpPayloadTypeTranslation>>(
"inboundRtpPayloadTypeTranslations", p.inboundRtpPayloadTypeTranslations, j);
5504 getOptional<GroupPriorityTranslation>(
"priorityTranslation", p.priorityTranslation, j);
5505 getOptional<GroupDefaultAudioPriority>(
"defaultAudioPriority", p.defaultAudioPriority, j);
5506 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
5507 getOptional<std::string>(
"anonymousAlias", p.anonymousAlias, j);
5508 getOptional<bool>(
"lbCrypto", p.lbCrypto, j,
false);
5509 getOptional<GroupAppTransport>(
"appTransport", p.appTransport, j);
5510 getOptional<bool>(
"allowLoopback", p.allowLoopback, j,
false);
5511 getOptionalWithIndicator<RtpProfile>(
"rtpProfile", p.rtpProfile, j, &p._wasDeserialized_rtpProfile);
5512 getOptional<RangerPackets>(
"rangerPackets", p.rangerPackets, j);
5513 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
5514 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
5515 getOptional<std::vector<uint16_t>>(
"specializerAffinities", p.specializerAffinities, j);
5516 getOptional<uint32_t>(
"securityLevel", p.securityLevel, j, 0);
5517 getOptional<std::vector<Source>>(
"ignoreSources", p.ignoreSources, j);
5518 getOptional<std::string>(
"languageCode", p.languageCode, j);
5519 getOptional<std::string>(
"synVoice", p.synVoice, j);
5521 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
5522 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
5526 getOptional<Group::InboundAliasGenerationPolicy_t>(
"inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
5528 getOptional<AudioGate>(
"gateIn", p.gateIn, j);
5530 getOptional<bool>(
"ignoreAudioTraffic", p.ignoreAudioTraffic, j,
false);
5532 FROMJSON_BASE_IMPL();
5537 JSON_SERIALIZED_CLASS(Mission)
5540 IMPLEMENT_JSON_SERIALIZATION()
5541 IMPLEMENT_JSON_DOCUMENTATION(
Mission)
5546 std::vector<Group> groups;
5547 std::chrono::system_clock::time_point begins;
5548 std::chrono::system_clock::time_point ends;
5549 std::string certStoreId;
5550 int multicastFailoverPolicy;
5558 certStoreId.clear();
5559 multicastFailoverPolicy = 0;
5564 static void to_json(nlohmann::json& j,
const Mission& p)
5569 TOJSON_IMPL(groups),
5570 TOJSON_IMPL(certStoreId),
5571 TOJSON_IMPL(multicastFailoverPolicy),
5572 TOJSON_IMPL(rallypoint)
5576 static void from_json(
const nlohmann::json& j, Mission& p)
5579 j.at(
"id").get_to(p.id);
5580 j.at(
"name").get_to(p.name);
5585 j.at(
"groups").get_to(p.groups);
5592 FROMJSON_IMPL(certStoreId, std::string, EMPTY_STRING);
5593 FROMJSON_IMPL(multicastFailoverPolicy,
int, 0);
5594 getOptional<Rallypoint>(
"rallypoint", p.rallypoint, j);
5598 JSON_SERIALIZED_CLASS(LicenseDescriptor)
5610 IMPLEMENT_JSON_SERIALIZATION()
5619 static const int STATUS_OK = 0;
5620 static const int ERR_NULL_ENTITLEMENT_KEY = -1;
5621 static const int ERR_NULL_LICENSE_KEY = -2;
5622 static const int ERR_INVALID_LICENSE_KEY_LEN = -3;
5623 static const int ERR_LICENSE_KEY_VERIFICATION_FAILURE = -4;
5624 static const int ERR_ACTIVATION_CODE_VERIFICATION_FAILURE = -5;
5625 static const int ERR_INVALID_EXPIRATION_DATE = -6;
5626 static const int ERR_GENERAL_FAILURE = -7;
5627 static const int ERR_NOT_INITIALIZED = -8;
5628 static const int ERR_REQUIRES_ACTIVATION = -9;
5629 static const int ERR_LICENSE_NOT_SUITED_FOR_ACTIVATION = -10;
5637 static const uint8_t LIC_CARGO_FLAG_LIMIT_TO_FEATURES = 0x01;
5701 entitlement.clear();
5703 activationCode.clear();
5706 expiresFormatted.clear();
5711 status = ERR_NOT_INITIALIZED;
5712 manufacturerId.clear();
5716 static void to_json(nlohmann::json& j,
const LicenseDescriptor& p)
5720 {
"entitlement",
"*entitlement*"},
5722 TOJSON_IMPL(activationCode),
5724 TOJSON_IMPL(expires),
5725 TOJSON_IMPL(expiresFormatted),
5727 TOJSON_IMPL(deviceId),
5728 TOJSON_IMPL(status),
5730 {
"manufacturerId",
"*manufacturerId*"},
5732 TOJSON_IMPL(cargoFlags)
5736 static void from_json(
const nlohmann::json& j, LicenseDescriptor& p)
5739 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
5740 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5741 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
5742 FROMJSON_IMPL(type,
int, 0);
5743 FROMJSON_IMPL(expires, time_t, 0);
5744 FROMJSON_IMPL(expiresFormatted, std::string, EMPTY_STRING);
5745 FROMJSON_IMPL(flags, uint32_t, 0);
5746 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
5747 FROMJSON_IMPL(status,
int, LicenseDescriptor::ERR_NOT_INITIALIZED);
5748 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
5749 FROMJSON_IMPL(cargo, std::string, EMPTY_STRING);
5750 FROMJSON_IMPL(cargoFlags, uint8_t, 0);
5755 JSON_SERIALIZED_CLASS(EngineNetworkingRpUdpStreaming)
5769 IMPLEMENT_JSON_SERIALIZATION()
5797 keepaliveIntervalSecs = 15;
5798 priority = TxPriority_t::priVoice;
5802 virtual void initForDocumenting()
5807 static void to_json(nlohmann::json& j,
const EngineNetworkingRpUdpStreaming& p)
5810 TOJSON_IMPL(enabled),
5812 TOJSON_IMPL(keepaliveIntervalSecs),
5813 TOJSON_IMPL(priority),
5817 static void from_json(
const nlohmann::json& j, EngineNetworkingRpUdpStreaming& p)
5820 getOptional<bool>(
"enabled", p.enabled, j,
false);
5821 getOptional<int>(
"port", p.port, j, 0);
5822 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
5823 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
5824 getOptional<int>(
"ttl", p.ttl, j, 64);
5828 JSON_SERIALIZED_CLASS(EnginePolicyNetworking)
5839 IMPLEMENT_JSON_SERIALIZATION()
5875 multicastRejoinSecs = 8;
5876 rallypointRtTestIntervalMs = 60000;
5877 logRtpJitterBufferStats =
false;
5878 preventMulticastFailover =
false;
5879 addressResolutionPolicy = AddressResolutionPolicy_t::arpIpv6ThenIpv4;
5881 rpUdpStreaming.clear();
5886 static void to_json(nlohmann::json& j,
const EnginePolicyNetworking& p)
5889 TOJSON_IMPL(defaultNic),
5890 TOJSON_IMPL(multicastRejoinSecs),
5892 TOJSON_IMPL(rallypointRtTestIntervalMs),
5893 TOJSON_IMPL(logRtpJitterBufferStats),
5894 TOJSON_IMPL(preventMulticastFailover),
5896 TOJSON_IMPL(rpUdpStreaming),
5897 TOJSON_IMPL(rtpProfile),
5898 TOJSON_IMPL(addressResolutionPolicy)
5901 static void from_json(
const nlohmann::json& j, EnginePolicyNetworking& p)
5904 FROMJSON_IMPL(defaultNic, std::string, EMPTY_STRING);
5905 FROMJSON_IMPL(multicastRejoinSecs,
int, 8);
5906 FROMJSON_IMPL(rallypointRtTestIntervalMs,
int, 60000);
5907 FROMJSON_IMPL(logRtpJitterBufferStats,
bool,
false);
5908 FROMJSON_IMPL(preventMulticastFailover,
bool,
false);
5910 getOptional<EngineNetworkingRpUdpStreaming>(
"rpUdpStreaming", p.rpUdpStreaming, j);
5911 getOptional<RtpProfile>(
"rtpProfile", p.rtpProfile, j);
5912 getOptional<AddressResolutionPolicy_t>(
"addressResolutionPolicy", p.addressResolutionPolicy, j, AddressResolutionPolicy_t::arpIpv6ThenIpv4);
5916 JSON_SERIALIZED_CLASS(Aec)
5928 IMPLEMENT_JSON_SERIALIZATION()
5929 IMPLEMENT_JSON_DOCUMENTATION(
Aec)
5984 static void to_json(nlohmann::json& j,
const Aec& p)
5987 TOJSON_IMPL(enabled),
5989 TOJSON_IMPL(speakerTailMs),
5993 static void from_json(
const nlohmann::json& j, Aec& p)
5996 FROMJSON_IMPL(enabled,
bool,
false);
5997 FROMJSON_IMPL(mode, Aec::Mode_t, Aec::Mode_t::aecmDefault);
5998 FROMJSON_IMPL(speakerTailMs,
int, 60);
5999 FROMJSON_IMPL(cng,
bool,
true);
6003 JSON_SERIALIZED_CLASS(Vad)
6015 IMPLEMENT_JSON_SERIALIZATION()
6016 IMPLEMENT_JSON_DOCUMENTATION(
Vad)
6036 vamVeryAggressive = 3
6057 static void to_json(nlohmann::json& j,
const Vad& p)
6060 TOJSON_IMPL(enabled),
6064 static void from_json(
const nlohmann::json& j, Vad& p)
6067 FROMJSON_IMPL(enabled,
bool,
false);
6068 FROMJSON_IMPL(mode, Vad::Mode_t, Vad::Mode_t::vamDefault);
6072 JSON_SERIALIZED_CLASS(Bridge)
6084 IMPLEMENT_JSON_SERIALIZATION()
6085 IMPLEMENT_JSON_DOCUMENTATION(
Bridge)
6116 static void to_json(nlohmann::json& j,
const Bridge& p)
6121 TOJSON_IMPL(groups),
6122 TOJSON_IMPL(enabled)
6125 static void from_json(
const nlohmann::json& j, Bridge& p)
6128 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
6129 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
6130 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
6131 FROMJSON_IMPL(enabled,
bool,
true);
6135 JSON_SERIALIZED_CLASS(AndroidAudio)
6147 IMPLEMENT_JSON_SERIALIZATION()
6151 constexpr static int INVALID_SESSION_ID = -9999;
6212 performanceMode = 12;
6216 sessionId = AndroidAudio::INVALID_SESSION_ID;
6221 static void to_json(nlohmann::json& j,
const AndroidAudio& p)
6225 TOJSON_IMPL(sharingMode),
6226 TOJSON_IMPL(performanceMode),
6228 TOJSON_IMPL(contentType),
6229 TOJSON_IMPL(inputPreset),
6230 TOJSON_IMPL(sessionId),
6231 TOJSON_IMPL(engineMode)
6234 static void from_json(
const nlohmann::json& j, AndroidAudio& p)
6237 FROMJSON_IMPL(api,
int, 0);
6238 FROMJSON_IMPL(sharingMode,
int, 0);
6239 FROMJSON_IMPL(performanceMode,
int, 12);
6240 FROMJSON_IMPL(usage,
int, 2);
6241 FROMJSON_IMPL(contentType,
int, 1);
6242 FROMJSON_IMPL(inputPreset,
int, 7);
6243 FROMJSON_IMPL(sessionId,
int, AndroidAudio::INVALID_SESSION_ID);
6244 FROMJSON_IMPL(engineMode,
int, 0);
6248 JSON_SERIALIZED_CLASS(EnginePolicyAudio)
6260 IMPLEMENT_JSON_SERIALIZATION()
6318 hardwareEnabled =
true;
6319 internalRate = 16000;
6320 internalChannels = 2;
6327 denoiseInput =
false;
6328 denoiseOutput =
false;
6329 saveInputPcm =
false;
6330 saveOutputPcm =
false;
6335 static void to_json(nlohmann::json& j,
const EnginePolicyAudio& p)
6338 TOJSON_IMPL(enabled),
6339 TOJSON_IMPL(hardwareEnabled),
6340 TOJSON_IMPL(internalRate),
6341 TOJSON_IMPL(internalChannels),
6342 TOJSON_IMPL(muteTxOnTx),
6345 TOJSON_IMPL(android),
6346 TOJSON_IMPL(inputAgc),
6347 TOJSON_IMPL(outputAgc),
6348 TOJSON_IMPL(denoiseInput),
6349 TOJSON_IMPL(denoiseOutput),
6350 TOJSON_IMPL(saveInputPcm),
6351 TOJSON_IMPL(saveOutputPcm),
6352 TOJSON_IMPL(registry)
6355 static void from_json(
const nlohmann::json& j, EnginePolicyAudio& p)
6358 getOptional<bool>(
"enabled", p.enabled, j,
true);
6359 getOptional<bool>(
"hardwareEnabled", p.hardwareEnabled, j,
true);
6360 FROMJSON_IMPL(internalRate,
int, 16000);
6361 FROMJSON_IMPL(internalChannels,
int, 2);
6363 FROMJSON_IMPL(muteTxOnTx,
bool,
false);
6364 getOptional<Aec>(
"aec", p.aec, j);
6365 getOptional<Vad>(
"vad", p.vad, j);
6366 getOptional<AndroidAudio>(
"android", p.android, j);
6367 getOptional<Agc>(
"inputAgc", p.inputAgc, j);
6368 getOptional<Agc>(
"outputAgc", p.outputAgc, j);
6369 FROMJSON_IMPL(denoiseInput,
bool,
false);
6370 FROMJSON_IMPL(denoiseOutput,
bool,
false);
6371 FROMJSON_IMPL(saveInputPcm,
bool,
false);
6372 FROMJSON_IMPL(saveOutputPcm,
bool,
false);
6373 getOptional<AudioRegistry>(
"registry", p.registry, j);
6377 JSON_SERIALIZED_CLASS(SecurityCertificate)
6389 IMPLEMENT_JSON_SERIALIZATION()
6411 certificate.clear();
6416 static void to_json(nlohmann::json& j,
const SecurityCertificate& p)
6419 TOJSON_IMPL(certificate),
6423 static void from_json(
const nlohmann::json& j, SecurityCertificate& p)
6426 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6427 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6432 JSON_SERIALIZED_CLASS(EnginePolicySecurity)
6445 IMPLEMENT_JSON_SERIALIZATION()
6478 certificate.clear();
6479 caCertificates.clear();
6483 static void to_json(nlohmann::json& j,
const EnginePolicySecurity& p)
6486 TOJSON_IMPL(certificate),
6487 TOJSON_IMPL(caCertificates)
6490 static void from_json(
const nlohmann::json& j, EnginePolicySecurity& p)
6493 getOptional(
"certificate", p.certificate, j);
6494 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
6498 JSON_SERIALIZED_CLASS(EnginePolicyLogging)
6510 IMPLEMENT_JSON_SERIALIZATION()
6543 enableSyslog =
false;
6547 static void to_json(nlohmann::json& j,
const EnginePolicyLogging& p)
6550 TOJSON_IMPL(maxLevel),
6551 TOJSON_IMPL(enableSyslog)
6554 static void from_json(
const nlohmann::json& j, EnginePolicyLogging& p)
6557 getOptional(
"maxLevel", p.maxLevel, j, 4);
6558 getOptional(
"enableSyslog", p.enableSyslog, j);
6563 JSON_SERIALIZED_CLASS(EnginePolicyDatabase)
6566 IMPLEMENT_JSON_SERIALIZATION()
6577 DatabaseType_t type;
6578 std::string fixedFileName;
6579 bool forceMaintenance;
6589 type = DatabaseType_t::dbtFixedMemory;
6590 fixedFileName.clear();
6591 forceMaintenance =
false;
6592 reclaimSpace =
false;
6600 TOJSON_IMPL(fixedFileName),
6601 TOJSON_IMPL(forceMaintenance),
6602 TOJSON_IMPL(reclaimSpace)
6605 static void from_json(
const nlohmann::json& j, EnginePolicyDatabase& p)
6608 FROMJSON_IMPL(type, EnginePolicyDatabase::DatabaseType_t, EnginePolicyDatabase::DatabaseType_t::dbtFixedMemory);
6609 FROMJSON_IMPL(fixedFileName, std::string, EMPTY_STRING);
6610 FROMJSON_IMPL(forceMaintenance,
bool,
false);
6611 FROMJSON_IMPL(reclaimSpace,
bool,
false);
6616 JSON_SERIALIZED_CLASS(SecureSignature)
6626 IMPLEMENT_JSON_SERIALIZATION()
6647 certificate.clear();
6653 static void to_json(nlohmann::json& j,
const SecureSignature& p)
6656 TOJSON_IMPL(certificate),
6658 TOJSON_IMPL(signature)
6661 static void from_json(
const nlohmann::json& j, SecureSignature& p)
6664 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6666 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
6670 JSON_SERIALIZED_CLASS(NamedAudioDevice)
6673 IMPLEMENT_JSON_SERIALIZATION()
6678 std::string manufacturer;
6681 std::string serialNumber;
6694 manufacturer.clear();
6697 serialNumber.clear();
6708 TOJSON_IMPL(manufacturer),
6711 TOJSON_IMPL(serialNumber),
6714 TOJSON_IMPL(isDefault),
6717 static void from_json(
const nlohmann::json& j, NamedAudioDevice& p)
6720 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6721 getOptional<std::string>(
"manufacturer", p.manufacturer, j, EMPTY_STRING);
6722 getOptional<std::string>(
"model", p.model, j, EMPTY_STRING);
6723 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
6724 getOptional<std::string>(
"serialNumber", p.serialNumber, j, EMPTY_STRING);
6725 getOptional<std::string>(
"type", p.type, j, EMPTY_STRING);
6726 getOptional<std::string>(
"extra", p.extra, j, EMPTY_STRING);
6727 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
6732 JSON_SERIALIZED_CLASS(EnginePolicyNamedAudioDevices)
6735 IMPLEMENT_JSON_SERIALIZATION()
6739 std::vector<NamedAudioDevice> inputs;
6740 std::vector<NamedAudioDevice> outputs;
6757 TOJSON_IMPL(inputs),
6758 TOJSON_IMPL(outputs)
6761 static void from_json(
const nlohmann::json& j, EnginePolicyNamedAudioDevices& p)
6764 getOptional<std::vector<NamedAudioDevice>>(
"inputs", p.inputs, j);
6765 getOptional<std::vector<NamedAudioDevice>>(
"outputs", p.outputs, j);
6769 JSON_SERIALIZED_CLASS(Licensing)
6783 IMPLEMENT_JSON_SERIALIZATION()
6810 entitlement.clear();
6812 activationCode.clear();
6814 manufacturerId.clear();
6818 static void to_json(nlohmann::json& j,
const Licensing& p)
6821 TOJSON_IMPL(entitlement),
6823 TOJSON_IMPL(activationCode),
6824 TOJSON_IMPL(deviceId),
6825 TOJSON_IMPL(manufacturerId)
6828 static void from_json(
const nlohmann::json& j, Licensing& p)
6831 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
6832 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6833 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
6834 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
6835 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
6839 JSON_SERIALIZED_CLASS(DiscoveryMagellan)
6851 IMPLEMENT_JSON_SERIALIZATION()
6876 interfaceName.clear();
6882 static void to_json(nlohmann::json& j,
const DiscoveryMagellan& p)
6885 TOJSON_IMPL(enabled),
6886 TOJSON_IMPL(interfaceName),
6887 TOJSON_IMPL(security),
6891 static void from_json(
const nlohmann::json& j, DiscoveryMagellan& p)
6894 getOptional(
"enabled", p.enabled, j,
false);
6895 getOptional<Tls>(
"tls", p.tls, j);
6896 getOptional<SecurityCertificate>(
"security", p.security, j);
6897 FROMJSON_IMPL(interfaceName, std::string, EMPTY_STRING);
6901 JSON_SERIALIZED_CLASS(DiscoverySsdp)
6913 IMPLEMENT_JSON_SERIALIZATION()
6944 interfaceName.clear();
6946 searchTerms.clear();
6947 ageTimeoutMs = 30000;
6948 advertising.clear();
6952 static void to_json(nlohmann::json& j,
const DiscoverySsdp& p)
6955 TOJSON_IMPL(enabled),
6956 TOJSON_IMPL(interfaceName),
6957 TOJSON_IMPL(address),
6958 TOJSON_IMPL(searchTerms),
6959 TOJSON_IMPL(ageTimeoutMs),
6960 TOJSON_IMPL(advertising)
6963 static void from_json(
const nlohmann::json& j, DiscoverySsdp& p)
6966 getOptional(
"enabled", p.enabled, j,
false);
6967 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6969 getOptional<NetworkAddress>(
"address", p.address, j);
6970 if(p.address.address.empty())
6972 p.address.address =
"255.255.255.255";
6974 if(p.address.port <= 0)
6976 p.address.port = 1900;
6979 getOptional<std::vector<std::string>>(
"searchTerms", p.searchTerms, j);
6980 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6981 getOptional<Advertising>(
"advertising", p.advertising, j);
6985 JSON_SERIALIZED_CLASS(DiscoverySap)
6997 IMPLEMENT_JSON_SERIALIZATION()
7024 interfaceName.clear();
7026 ageTimeoutMs = 30000;
7027 advertising.clear();
7031 static void to_json(nlohmann::json& j,
const DiscoverySap& p)
7034 TOJSON_IMPL(enabled),
7035 TOJSON_IMPL(interfaceName),
7036 TOJSON_IMPL(address),
7037 TOJSON_IMPL(ageTimeoutMs),
7038 TOJSON_IMPL(advertising)
7041 static void from_json(
const nlohmann::json& j, DiscoverySap& p)
7044 getOptional(
"enabled", p.enabled, j,
false);
7045 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7046 getOptional<NetworkAddress>(
"address", p.address, j);
7047 if(p.address.address.empty())
7049 p.address.address =
"224.2.127.254";
7051 if(p.address.port <= 0)
7053 p.address.port = 9875;
7056 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7057 getOptional<Advertising>(
"advertising", p.advertising, j);
7061 JSON_SERIALIZED_CLASS(DiscoveryCistech)
7075 IMPLEMENT_JSON_SERIALIZATION()
7080 std::string interfaceName;
7092 interfaceName.clear();
7094 ageTimeoutMs = 30000;
7101 TOJSON_IMPL(enabled),
7102 TOJSON_IMPL(interfaceName),
7103 TOJSON_IMPL(address),
7104 TOJSON_IMPL(ageTimeoutMs)
7107 static void from_json(
const nlohmann::json& j, DiscoveryCistech& p)
7110 getOptional(
"enabled", p.enabled, j,
false);
7111 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7112 getOptional<NetworkAddress>(
"address", p.address, j);
7113 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7118 JSON_SERIALIZED_CLASS(DiscoveryTrellisware)
7130 IMPLEMENT_JSON_SERIALIZATION()
7153 static void to_json(nlohmann::json& j,
const DiscoveryTrellisware& p)
7156 TOJSON_IMPL(enabled),
7157 TOJSON_IMPL(security)
7160 static void from_json(
const nlohmann::json& j, DiscoveryTrellisware& p)
7163 getOptional(
"enabled", p.enabled, j,
false);
7164 getOptional<SecurityCertificate>(
"security", p.security, j);
7168 JSON_SERIALIZED_CLASS(DiscoveryConfiguration)
7180 IMPLEMENT_JSON_SERIALIZATION()
7213 static void to_json(nlohmann::json& j,
const DiscoveryConfiguration& p)
7216 TOJSON_IMPL(magellan),
7219 TOJSON_IMPL(cistech),
7220 TOJSON_IMPL(trellisware)
7223 static void from_json(
const nlohmann::json& j, DiscoveryConfiguration& p)
7226 getOptional<DiscoveryMagellan>(
"magellan", p.magellan, j);
7227 getOptional<DiscoverySsdp>(
"ssdp", p.ssdp, j);
7228 getOptional<DiscoverySap>(
"sap", p.sap, j);
7229 getOptional<DiscoveryCistech>(
"cistech", p.cistech, j);
7230 getOptional<DiscoveryTrellisware>(
"trellisware", p.trellisware, j);
7235 JSON_SERIALIZED_CLASS(EnginePolicyInternals)
7249 IMPLEMENT_JSON_SERIALIZATION()
7264 int logTaskQueueStatsIntervalMs;
7266 bool enableLazySpeakerClosure;
7303 housekeeperIntervalMs = 1000;
7304 logTaskQueueStatsIntervalMs = 0;
7307 enableLazySpeakerClosure =
false;
7308 rpClusterStrategy = RallypointCluster::ConnectionStrategy_t::csRoundRobin;
7309 rpClusterRolloverSecs = 10;
7310 rtpExpirationCheckIntervalMs = 250;
7311 rpConnectionTimeoutSecs = 0;
7312 rpTransactionTimeoutMs = 0;
7313 stickyTidHangSecs = 10;
7314 uriStreamingIntervalMs = 60;
7315 delayedMicrophoneClosureSecs = 15;
7320 static void to_json(nlohmann::json& j,
const EnginePolicyInternals& p)
7323 TOJSON_IMPL(watchdog),
7324 TOJSON_IMPL(housekeeperIntervalMs),
7325 TOJSON_IMPL(logTaskQueueStatsIntervalMs),
7326 TOJSON_IMPL(maxTxSecs),
7327 TOJSON_IMPL(maxRxSecs),
7328 TOJSON_IMPL(enableLazySpeakerClosure),
7329 TOJSON_IMPL(rpClusterStrategy),
7330 TOJSON_IMPL(rpClusterRolloverSecs),
7331 TOJSON_IMPL(rtpExpirationCheckIntervalMs),
7332 TOJSON_IMPL(rpConnectionTimeoutSecs),
7333 TOJSON_IMPL(rpTransactionTimeoutMs),
7334 TOJSON_IMPL(stickyTidHangSecs),
7335 TOJSON_IMPL(uriStreamingIntervalMs),
7336 TOJSON_IMPL(delayedMicrophoneClosureSecs),
7340 static void from_json(
const nlohmann::json& j, EnginePolicyInternals& p)
7343 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
7344 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
7345 getOptional<int>(
"logTaskQueueStatsIntervalMs", p.logTaskQueueStatsIntervalMs, j, 0);
7346 getOptional<int>(
"maxTxSecs", p.maxTxSecs, j, 30);
7347 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
7348 getOptional<bool>(
"enableLazySpeakerClosure", p.enableLazySpeakerClosure, j,
false);
7349 getOptional<RallypointCluster::ConnectionStrategy_t>(
"rpClusterStrategy", p.rpClusterStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
7350 getOptional<int>(
"rpClusterRolloverSecs", p.rpClusterRolloverSecs, j, 10);
7351 getOptional<int>(
"rtpExpirationCheckIntervalMs", p.rtpExpirationCheckIntervalMs, j, 250);
7352 getOptional<int>(
"rpConnectionTimeoutSecs", p.rpConnectionTimeoutSecs, j, 0);
7353 getOptional<int>(
"rpTransactionTimeoutMs", p.rpTransactionTimeoutMs, j, 0);
7354 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
7355 getOptional<int>(
"uriStreamingIntervalMs", p.uriStreamingIntervalMs, j, 60);
7356 getOptional<int>(
"delayedMicrophoneClosureSecs", p.delayedMicrophoneClosureSecs, j, 15);
7357 getOptional<TuningSettings>(
"tuning", p.tuning, j);
7361 JSON_SERIALIZED_CLASS(EnginePolicyTimelines)
7375 IMPLEMENT_JSON_SERIALIZATION()
7437 storageRoot.clear();
7438 maxStorageMb = 1024;
7439 maxMemMb = maxStorageMb;
7440 maxAudioEventMemMb = maxMemMb;
7441 maxDiskMb = maxStorageMb;
7442 maxEventAgeSecs = (86400 * 30);
7443 groomingIntervalSecs = (60 * 30);
7445 autosaveIntervalSecs = 5;
7447 disableSigningAndVerification =
false;
7452 static void to_json(nlohmann::json& j,
const EnginePolicyTimelines& p)
7455 TOJSON_IMPL(enabled),
7456 TOJSON_IMPL(storageRoot),
7457 TOJSON_IMPL(maxMemMb),
7458 TOJSON_IMPL(maxAudioEventMemMb),
7459 TOJSON_IMPL(maxDiskMb),
7460 TOJSON_IMPL(maxEventAgeSecs),
7461 TOJSON_IMPL(maxEvents),
7462 TOJSON_IMPL(groomingIntervalSecs),
7463 TOJSON_IMPL(autosaveIntervalSecs),
7464 TOJSON_IMPL(security),
7465 TOJSON_IMPL(disableSigningAndVerification),
7466 TOJSON_IMPL(ephemeral)
7469 static void from_json(
const nlohmann::json& j, EnginePolicyTimelines& p)
7472 getOptional<bool>(
"enabled", p.enabled, j,
true);
7473 getOptional<std::string>(
"storageRoot", p.storageRoot, j, EMPTY_STRING);
7475 getOptional<int>(
"maxStorageMb", p.maxStorageMb, j, 1024);
7476 getOptional<int>(
"maxMemMb", p.maxMemMb, j, p.maxStorageMb);
7477 getOptional<int>(
"maxAudioEventMemMb", p.maxAudioEventMemMb, j, p.maxMemMb);
7478 getOptional<int>(
"maxDiskMb", p.maxDiskMb, j, p.maxStorageMb);
7479 getOptional<long>(
"maxEventAgeSecs", p.maxEventAgeSecs, j, (86400 * 30));
7480 getOptional<long>(
"groomingIntervalSecs", p.groomingIntervalSecs, j, (60 * 30));
7481 getOptional<long>(
"autosaveIntervalSecs", p.autosaveIntervalSecs, j, 5);
7482 getOptional<int>(
"maxEvents", p.maxEvents, j, 1000);
7483 getOptional<SecurityCertificate>(
"security", p.security, j);
7484 getOptional<bool>(
"disableSigningAndVerification", p.disableSigningAndVerification, j,
false);
7485 getOptional<bool>(
"ephemeral", p.ephemeral, j,
false);
7490 JSON_SERIALIZED_CLASS(RtpMapEntry)
7502 IMPLEMENT_JSON_SERIALIZATION()
7524 rtpPayloadType = -1;
7528 static void to_json(nlohmann::json& j,
const RtpMapEntry& p)
7532 TOJSON_IMPL(engageType),
7533 TOJSON_IMPL(rtpPayloadType)
7536 static void from_json(
const nlohmann::json& j, RtpMapEntry& p)
7539 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7540 getOptional<int>(
"engageType", p.engageType, j, -1);
7541 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7545 JSON_SERIALIZED_CLASS(ExternalModule)
7557 IMPLEMENT_JSON_SERIALIZATION()
7579 configuration.clear();
7583 static void to_json(nlohmann::json& j,
const ExternalModule& p)
7590 if(!p.configuration.empty())
7592 j[
"configuration"] = p.configuration;
7595 static void from_json(
const nlohmann::json& j, ExternalModule& p)
7598 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7599 getOptional<std::string>(
"file", p.file, j, EMPTY_STRING);
7603 p.configuration = j.at(
"configuration");
7607 p.configuration.clear();
7613 JSON_SERIALIZED_CLASS(ExternalCodecDescriptor)
7625 IMPLEMENT_JSON_SERIALIZATION()
7648 rtpPayloadType = -1;
7651 rtpTsMultiplier = 0;
7655 static void to_json(nlohmann::json& j,
const ExternalCodecDescriptor& p)
7658 TOJSON_IMPL(rtpPayloadType),
7659 TOJSON_IMPL(samplingRate),
7660 TOJSON_IMPL(channels),
7661 TOJSON_IMPL(rtpTsMultiplier)
7664 static void from_json(
const nlohmann::json& j, ExternalCodecDescriptor& p)
7668 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7669 getOptional<int>(
"samplingRate", p.samplingRate, j, -1);
7670 getOptional<int>(
"channels", p.channels, j, -1);
7671 getOptional<int>(
"rtpTsMultiplier", p.rtpTsMultiplier, j, -1);
7675 JSON_SERIALIZED_CLASS(EngineStatusReportConfiguration)
7687 IMPLEMENT_JSON_SERIALIZATION()
7719 includeMemoryDetail =
false;
7720 includeTaskQueueDetail =
false;
7725 static void to_json(nlohmann::json& j,
const EngineStatusReportConfiguration& p)
7728 TOJSON_IMPL(fileName),
7729 TOJSON_IMPL(intervalSecs),
7730 TOJSON_IMPL(enabled),
7731 TOJSON_IMPL(includeMemoryDetail),
7732 TOJSON_IMPL(includeTaskQueueDetail),
7736 static void from_json(
const nlohmann::json& j, EngineStatusReportConfiguration& p)
7739 getOptional<std::string>(
"fileName", p.fileName, j);
7740 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
7741 getOptional<bool>(
"enabled", p.enabled, j,
false);
7742 getOptional<std::string>(
"runCmd", p.runCmd, j);
7743 getOptional<bool>(
"includeMemoryDetail", p.includeMemoryDetail, j,
false);
7744 getOptional<bool>(
"includeTaskQueueDetail", p.includeTaskQueueDetail, j,
false);
7748 JSON_SERIALIZED_CLASS(EnginePolicy)
7762 IMPLEMENT_JSON_SERIALIZATION()
7819 dataDirectory.clear();
7830 namedAudioDevices.clear();
7831 externalCodecs.clear();
7833 statusReport.clear();
7837 static void to_json(nlohmann::json& j,
const EnginePolicy& p)
7840 TOJSON_IMPL(dataDirectory),
7841 TOJSON_IMPL(licensing),
7842 TOJSON_IMPL(security),
7843 TOJSON_IMPL(networking),
7845 TOJSON_IMPL(discovery),
7846 TOJSON_IMPL(logging),
7847 TOJSON_IMPL(internals),
7848 TOJSON_IMPL(timelines),
7849 TOJSON_IMPL(database),
7850 TOJSON_IMPL(featureset),
7851 TOJSON_IMPL(namedAudioDevices),
7852 TOJSON_IMPL(externalCodecs),
7853 TOJSON_IMPL(rtpMap),
7854 TOJSON_IMPL(statusReport)
7857 static void from_json(
const nlohmann::json& j, EnginePolicy& p)
7860 FROMJSON_IMPL_SIMPLE(dataDirectory);
7861 FROMJSON_IMPL_SIMPLE(licensing);
7862 FROMJSON_IMPL_SIMPLE(security);
7863 FROMJSON_IMPL_SIMPLE(networking);
7864 FROMJSON_IMPL_SIMPLE(audio);
7865 FROMJSON_IMPL_SIMPLE(discovery);
7866 FROMJSON_IMPL_SIMPLE(logging);
7867 FROMJSON_IMPL_SIMPLE(internals);
7868 FROMJSON_IMPL_SIMPLE(timelines);
7869 FROMJSON_IMPL_SIMPLE(database);
7870 FROMJSON_IMPL_SIMPLE(featureset);
7871 FROMJSON_IMPL_SIMPLE(namedAudioDevices);
7872 FROMJSON_IMPL_SIMPLE(externalCodecs);
7873 FROMJSON_IMPL_SIMPLE(rtpMap);
7874 FROMJSON_IMPL_SIMPLE(statusReport);
7879 JSON_SERIALIZED_CLASS(TalkgroupAsset)
7891 IMPLEMENT_JSON_SERIALIZATION()
7914 static void to_json(nlohmann::json& j,
const TalkgroupAsset& p)
7917 TOJSON_IMPL(nodeId),
7921 static void from_json(
const nlohmann::json& j, TalkgroupAsset& p)
7924 getOptional<std::string>(
"nodeId", p.nodeId, j);
7925 getOptional<Group>(
"group", p.group, j);
7929 JSON_SERIALIZED_CLASS(EngageDiscoveredGroup)
7939 IMPLEMENT_JSON_SERIALIZATION()
7969 static void to_json(nlohmann::json& j,
const EngageDiscoveredGroup& p)
7978 static void from_json(
const nlohmann::json& j, EngageDiscoveredGroup& p)
7981 getOptional<std::string>(
"id", p.id, j);
7982 getOptional<int>(
"type", p.type, j, 0);
7983 getOptional<NetworkAddress>(
"rx", p.rx, j);
7984 getOptional<NetworkAddress>(
"tx", p.tx, j);
7988 JSON_SERIALIZED_CLASS(RallypointPeer)
8000 IMPLEMENT_JSON_SERIALIZATION()
8007 olpUseRpConfiguration = 0,
8014 } OutboundLeafPolicy_t;
8055 certificate.clear();
8056 connectionTimeoutSecs = 0;
8057 forceIsMeshLeaf =
false;
8058 outboundLeafPolicy = OutboundLeafPolicy_t::olpUseRpConfiguration;
8059 protocol = Rallypoint::RpProtocol_t::rppTlsTcp;
8061 additionalProtocols.clear();
8065 static void to_json(nlohmann::json& j,
const RallypointPeer& p)
8069 TOJSON_IMPL(enabled),
8071 TOJSON_IMPL(certificate),
8072 TOJSON_IMPL(connectionTimeoutSecs),
8073 TOJSON_IMPL(forceIsMeshLeaf),
8074 TOJSON_IMPL(outboundLeafPolicy),
8075 TOJSON_IMPL(protocol),
8077 TOJSON_IMPL(additionalProtocols)
8080 static void from_json(
const nlohmann::json& j, RallypointPeer& p)
8083 j.at(
"id").get_to(p.id);
8084 getOptional<bool>(
"enabled", p.enabled, j,
true);
8085 getOptional<NetworkAddress>(
"host", p.host, j);
8086 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8087 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
8088 getOptional<bool>(
"forceIsMeshLeaf", p.forceIsMeshLeaf, j,
false);
8089 getOptional<RallypointPeer::OutboundLeafPolicy_t>(
"outboundLeafPolicy", p.outboundLeafPolicy, j, RallypointPeer::OutboundLeafPolicy_t::olpUseRpConfiguration);
8090 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
8091 getOptional<std::string>(
"path", p.path, j);
8092 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
8096 JSON_SERIALIZED_CLASS(RallypointServerLimits)
8108 IMPLEMENT_JSON_SERIALIZATION()
8166 maxMulticastReflectors = 0;
8167 maxRegisteredStreams = 0;
8169 maxRxPacketsPerSec = 0;
8170 maxTxPacketsPerSec = 0;
8171 maxRxBytesPerSec = 0;
8172 maxTxBytesPerSec = 0;
8174 maxInboundBacklog = 64;
8175 lowPriorityQueueThreshold = 64;
8176 normalPriorityQueueThreshold = 256;
8177 denyNewConnectionCpuThreshold = 75;
8178 warnAtCpuThreshold = 65;
8182 static void to_json(nlohmann::json& j,
const RallypointServerLimits& p)
8185 TOJSON_IMPL(maxClients),
8186 TOJSON_IMPL(maxPeers),
8187 TOJSON_IMPL(maxMulticastReflectors),
8188 TOJSON_IMPL(maxRegisteredStreams),
8189 TOJSON_IMPL(maxStreamPaths),
8190 TOJSON_IMPL(maxRxPacketsPerSec),
8191 TOJSON_IMPL(maxTxPacketsPerSec),
8192 TOJSON_IMPL(maxRxBytesPerSec),
8193 TOJSON_IMPL(maxTxBytesPerSec),
8194 TOJSON_IMPL(maxQOpsPerSec),
8195 TOJSON_IMPL(maxInboundBacklog),
8196 TOJSON_IMPL(lowPriorityQueueThreshold),
8197 TOJSON_IMPL(normalPriorityQueueThreshold),
8198 TOJSON_IMPL(denyNewConnectionCpuThreshold),
8199 TOJSON_IMPL(warnAtCpuThreshold)
8202 static void from_json(
const nlohmann::json& j, RallypointServerLimits& p)
8205 getOptional<uint32_t>(
"maxClients", p.maxClients, j, 0);
8206 getOptional<uint32_t>(
"maxPeers", p.maxPeers, j, 0);
8207 getOptional<uint32_t>(
"maxMulticastReflectors", p.maxMulticastReflectors, j, 0);
8208 getOptional<uint32_t>(
"maxRegisteredStreams", p.maxRegisteredStreams, j, 0);
8209 getOptional<uint32_t>(
"maxStreamPaths", p.maxStreamPaths, j, 0);
8210 getOptional<uint32_t>(
"maxRxPacketsPerSec", p.maxRxPacketsPerSec, j, 0);
8211 getOptional<uint32_t>(
"maxTxPacketsPerSec", p.maxTxPacketsPerSec, j, 0);
8212 getOptional<uint32_t>(
"maxRxBytesPerSec", p.maxRxBytesPerSec, j, 0);
8213 getOptional<uint32_t>(
"maxTxBytesPerSec", p.maxTxBytesPerSec, j, 0);
8214 getOptional<uint32_t>(
"maxQOpsPerSec", p.maxQOpsPerSec, j, 0);
8215 getOptional<uint32_t>(
"maxInboundBacklog", p.maxInboundBacklog, j, 64);
8216 getOptional<uint32_t>(
"lowPriorityQueueThreshold", p.lowPriorityQueueThreshold, j, 64);
8217 getOptional<uint32_t>(
"normalPriorityQueueThreshold", p.normalPriorityQueueThreshold, j, 256);
8218 getOptional<uint32_t>(
"denyNewConnectionCpuThreshold", p.denyNewConnectionCpuThreshold, j, 75);
8219 getOptional<uint32_t>(
"warnAtCpuThreshold", p.warnAtCpuThreshold, j, 65);
8223 JSON_SERIALIZED_CLASS(RallypointServerStatusReportConfiguration)
8235 IMPLEMENT_JSON_SERIALIZATION()
8270 includeLinks =
false;
8271 includePeerLinkDetails =
false;
8272 includeClientLinkDetails =
false;
8277 static void to_json(nlohmann::json& j,
const RallypointServerStatusReportConfiguration& p)
8280 TOJSON_IMPL(fileName),
8281 TOJSON_IMPL(intervalSecs),
8282 TOJSON_IMPL(enabled),
8283 TOJSON_IMPL(includeLinks),
8284 TOJSON_IMPL(includePeerLinkDetails),
8285 TOJSON_IMPL(includeClientLinkDetails),
8289 static void from_json(
const nlohmann::json& j, RallypointServerStatusReportConfiguration& p)
8292 getOptional<std::string>(
"fileName", p.fileName, j);
8293 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8294 getOptional<bool>(
"enabled", p.enabled, j,
false);
8295 getOptional<bool>(
"includeLinks", p.includeLinks, j,
false);
8296 getOptional<bool>(
"includePeerLinkDetails", p.includePeerLinkDetails, j,
false);
8297 getOptional<bool>(
"includeClientLinkDetails", p.includeClientLinkDetails, j,
false);
8298 getOptional<std::string>(
"runCmd", p.runCmd, j);
8302 JSON_SERIALIZED_CLASS(RallypointServerLinkGraph)
8305 IMPLEMENT_JSON_SERIALIZATION()
8348 includeDigraphEnclosure =
true;
8349 includeClients =
false;
8350 coreRpStyling =
"[shape=hexagon color=firebrick style=filled]";
8351 leafRpStyling =
"[shape=box color=gray style=filled]";
8352 clientStyling.clear();
8357 static void to_json(nlohmann::json& j,
const RallypointServerLinkGraph& p)
8360 TOJSON_IMPL(fileName),
8361 TOJSON_IMPL(minRefreshSecs),
8362 TOJSON_IMPL(enabled),
8363 TOJSON_IMPL(includeDigraphEnclosure),
8364 TOJSON_IMPL(includeClients),
8365 TOJSON_IMPL(coreRpStyling),
8366 TOJSON_IMPL(leafRpStyling),
8367 TOJSON_IMPL(clientStyling),
8371 static void from_json(
const nlohmann::json& j, RallypointServerLinkGraph& p)
8374 getOptional<std::string>(
"fileName", p.fileName, j);
8375 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8376 getOptional<bool>(
"enabled", p.enabled, j,
false);
8377 getOptional<bool>(
"includeDigraphEnclosure", p.includeDigraphEnclosure, j,
true);
8378 getOptional<bool>(
"includeClients", p.includeClients, j,
false);
8379 getOptional<std::string>(
"coreRpStyling", p.coreRpStyling, j,
"[shape=hexagon color=firebrick style=filled]");
8380 getOptional<std::string>(
"leafRpStyling", p.leafRpStyling, j,
"[shape=box color=gray style=filled]");
8381 getOptional<std::string>(
"clientStyling", p.clientStyling, j);
8382 getOptional<std::string>(
"runCmd", p.runCmd, j);
8387 JSON_SERIALIZED_CLASS(RallypointServerStreamStatsExport)
8397 IMPLEMENT_JSON_SERIALIZATION()
8440 resetCountersAfterExport =
false;
8446 static void to_json(nlohmann::json& j,
const RallypointServerStreamStatsExport& p)
8449 TOJSON_IMPL(fileName),
8450 TOJSON_IMPL(intervalSecs),
8451 TOJSON_IMPL(enabled),
8452 TOJSON_IMPL(resetCountersAfterExport),
8453 TOJSON_IMPL(runCmd),
8457 static void from_json(
const nlohmann::json& j, RallypointServerStreamStatsExport& p)
8460 getOptional<std::string>(
"fileName", p.fileName, j);
8461 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8462 getOptional<bool>(
"enabled", p.enabled, j,
false);
8463 getOptional<bool>(
"resetCountersAfterExport", p.resetCountersAfterExport, j,
false);
8464 getOptional<std::string>(
"runCmd", p.runCmd, j);
8465 getOptional<RallypointServerStreamStatsExport::ExportFormat_t>(
"format", p.format, j, RallypointServerStreamStatsExport::ExportFormat_t::fmtCsv);
8469 JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
8472 IMPLEMENT_JSON_SERIALIZATION()
8501 static void to_json(nlohmann::json& j,
const RallypointServerRouteMap& p)
8504 TOJSON_IMPL(fileName),
8505 TOJSON_IMPL(minRefreshSecs),
8506 TOJSON_IMPL(enabled),
8510 static void from_json(
const nlohmann::json& j, RallypointServerRouteMap& p)
8513 getOptional<std::string>(
"fileName", p.fileName, j);
8514 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8515 getOptional<bool>(
"enabled", p.enabled, j,
false);
8516 getOptional<std::string>(
"runCmd", p.runCmd, j);
8521 JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
8533 IMPLEMENT_JSON_SERIALIZATION()
8552 immediateClose =
true;
8556 static void to_json(nlohmann::json& j,
const ExternalHealthCheckResponder& p)
8559 TOJSON_IMPL(listenPort),
8560 TOJSON_IMPL(immediateClose)
8563 static void from_json(
const nlohmann::json& j, ExternalHealthCheckResponder& p)
8566 getOptional<int>(
"listenPort", p.listenPort, j, 0);
8567 getOptional<bool>(
"immediateClose", p.immediateClose, j,
true);
8572 JSON_SERIALIZED_CLASS(PeeringConfiguration)
8582 IMPLEMENT_JSON_SERIALIZATION()
8612 static void to_json(nlohmann::json& j,
const PeeringConfiguration& p)
8616 TOJSON_IMPL(version),
8617 TOJSON_IMPL(comments),
8621 static void from_json(
const nlohmann::json& j, PeeringConfiguration& p)
8624 getOptional<std::string>(
"id", p.id, j);
8625 getOptional<int>(
"version", p.version, j, 0);
8626 getOptional<std::string>(
"comments", p.comments, j);
8627 getOptional<std::vector<RallypointPeer>>(
"peers", p.peers, j);
8631 JSON_SERIALIZED_CLASS(IgmpSnooping)
8641 IMPLEMENT_JSON_SERIALIZATION()
8664 queryIntervalMs = 125000;
8665 subscriptionTimeoutMs = 0;
8669 static void to_json(nlohmann::json& j,
const IgmpSnooping& p)
8672 TOJSON_IMPL(enabled),
8673 TOJSON_IMPL(queryIntervalMs),
8674 TOJSON_IMPL(subscriptionTimeoutMs)
8677 static void from_json(
const nlohmann::json& j, IgmpSnooping& p)
8680 getOptional<bool>(
"enabled", p.enabled, j);
8681 getOptional<int>(
"queryIntervalMs", p.queryIntervalMs, j, 125000);
8682 getOptional<int>(
"subscriptionTimeoutMs", p.subscriptionTimeoutMs, j, 0);
8687 JSON_SERIALIZED_CLASS(RallypointReflector)
8696 IMPLEMENT_JSON_SERIALIZATION()
8711 } DirectionRestriction_t;
8743 multicastInterfaceName.clear();
8744 additionalTx.clear();
8745 directionRestriction = drNone;
8749 static void to_json(nlohmann::json& j,
const RallypointReflector& p)
8755 TOJSON_IMPL(multicastInterfaceName),
8756 TOJSON_IMPL(additionalTx),
8757 TOJSON_IMPL(directionRestriction)
8760 static void from_json(
const nlohmann::json& j, RallypointReflector& p)
8763 j.at(
"id").get_to(p.id);
8764 j.at(
"rx").get_to(p.rx);
8765 j.at(
"tx").get_to(p.tx);
8766 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
8767 getOptional<std::vector<NetworkAddress>>(
"additionalTx", p.additionalTx, j);
8768 getOptional<RallypointReflector::DirectionRestriction_t>(
"directionRestriction", p.directionRestriction, j, RallypointReflector::DirectionRestriction_t::drNone);
8773 JSON_SERIALIZED_CLASS(RallypointUdpStreamingIpvX)
8782 IMPLEMENT_JSON_SERIALIZATION()
8804 static void to_json(nlohmann::json& j,
const RallypointUdpStreamingIpvX& p)
8807 TOJSON_IMPL(enabled),
8808 TOJSON_IMPL(external)
8811 static void from_json(
const nlohmann::json& j, RallypointUdpStreamingIpvX& p)
8814 getOptional<bool>(
"enabled", p.enabled, j,
true);
8815 getOptional<NetworkAddress>(
"external", p.external, j);
8819 JSON_SERIALIZED_CLASS(RallypointUdpStreaming)
8828 IMPLEMENT_JSON_SERIALIZATION()
8839 ctSharedKeyAes256FullIv = 1,
8842 ctSharedKeyAes256IdxIv = 2,
8845 ctSharedKeyChaCha20FullIv = 3,
8848 ctSharedKeyChaCha20IdxIv = 4
8884 cryptoType = CryptoType_t::ctSharedKeyAes256FullIv;
8888 keepaliveIntervalSecs = 15;
8889 priority = TxPriority_t::priVoice;
8894 static void to_json(nlohmann::json& j,
const RallypointUdpStreaming& p)
8897 TOJSON_IMPL(enabled),
8898 TOJSON_IMPL(cryptoType),
8899 TOJSON_IMPL(listenPort),
8900 TOJSON_IMPL(keepaliveIntervalSecs),
8903 TOJSON_IMPL(priority),
8907 static void from_json(
const nlohmann::json& j, RallypointUdpStreaming& p)
8910 getOptional<bool>(
"enabled", p.enabled, j,
true);
8911 getOptional<RallypointUdpStreaming::CryptoType_t>(
"cryptoType", p.cryptoType, j, RallypointUdpStreaming::CryptoType_t::ctSharedKeyAes256FullIv);
8912 getOptional<int>(
"listenPort", p.listenPort, j, 7444);
8913 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
8914 getOptional<RallypointUdpStreamingIpvX>(
"ipv4", p.ipv4, j);
8915 getOptional<RallypointUdpStreamingIpvX>(
"ipv6", p.ipv6, j);
8916 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
8917 getOptional<int>(
"ttl", p.ttl, j, 64);
8921 JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
8930 IMPLEMENT_JSON_SERIALIZATION()
8975 static void to_json(nlohmann::json& j,
const RallypointRpRtTimingBehavior& p)
8978 TOJSON_IMPL(behavior),
8979 TOJSON_IMPL(atOrAboveMs),
8983 static void from_json(
const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
8986 getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>(
"behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
8987 getOptional<uint32_t>(
"atOrAboveMs", p.atOrAboveMs, j, 0);
8988 getOptional<std::string>(
"runCmd", p.runCmd, j);
8993 JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
9002 IMPLEMENT_JSON_SERIALIZATION()
9030 certificate.clear();
9031 requireClientCertificate =
false;
9036 static void to_json(nlohmann::json& j,
const RallypointWebsocketSettings& p)
9039 TOJSON_IMPL(enabled),
9040 TOJSON_IMPL(listenPort),
9041 TOJSON_IMPL(certificate),
9042 TOJSON_IMPL(requireClientCertificate),
9043 TOJSON_IMPL(requireTls)
9046 static void from_json(
const nlohmann::json& j, RallypointWebsocketSettings& p)
9049 getOptional<bool>(
"enabled", p.enabled, j,
false);
9050 getOptional<int>(
"listenPort", p.listenPort, j, 8443);
9051 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9052 getOptional<bool>(
"requireClientCertificate", p.requireClientCertificate, j,
false);
9053 getOptional<bool>(
"requireTls", p.requireTls, j,
true);
9059 JSON_SERIALIZED_CLASS(RallypointAdvertisingSettings)
9068 IMPLEMENT_JSON_SERIALIZATION()
9099 serviceName =
"_rallypoint._tcp.local.";
9100 interfaceName.clear();
9106 static void to_json(nlohmann::json& j,
const RallypointAdvertisingSettings& p)
9109 TOJSON_IMPL(enabled),
9110 TOJSON_IMPL(hostName),
9111 TOJSON_IMPL(serviceName),
9112 TOJSON_IMPL(interfaceName),
9117 static void from_json(
const nlohmann::json& j, RallypointAdvertisingSettings& p)
9120 getOptional<bool>(
"enabled", p.enabled, j,
false);
9121 getOptional<std::string>(
"hostName", p.hostName, j);
9122 getOptional<std::string>(
"serviceName", p.serviceName, j,
"_rallypoint._tcp.local.");
9123 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
9125 getOptional<int>(
"port", p.port, j, 0);
9126 getOptional<int>(
"ttl", p.ttl, j, 60);
9133 JSON_SERIALIZED_CLASS(NamedIdentity)
9142 IMPLEMENT_JSON_SERIALIZATION()
9160 certificate.clear();
9164 static void to_json(nlohmann::json& j,
const NamedIdentity& p)
9168 TOJSON_IMPL(certificate)
9171 static void from_json(
const nlohmann::json& j, NamedIdentity& p)
9174 getOptional<std::string>(
"name", p.name, j);
9175 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9179 JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
9188 IMPLEMENT_JSON_SERIALIZATION()
9206 restrictions.clear();
9210 static void to_json(nlohmann::json& j,
const RallypointExtendedGroupRestriction& p)
9214 TOJSON_IMPL(restrictions)
9217 static void from_json(
const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
9220 getOptional<std::string>(
"id", p.id, j);
9221 getOptional<std::vector<StringRestrictionList>>(
"restrictions", p.restrictions, j);
9226 JSON_SERIALIZED_CLASS(RallypointServer)
9237 IMPLEMENT_JSON_SERIALIZATION()
9245 sptCertPublicKey = 2,
9248 sptCertFingerprint = 5,
9262 } StreamIdPrivacyType_t;
9458 interfaceName.clear();
9459 certificate.clear();
9460 allowMulticastForwarding =
false;
9461 peeringConfiguration.clear();
9462 peeringConfigurationFileName.clear();
9463 peeringConfigurationFileCommand.clear();
9464 peeringConfigurationFileCheckSecs = 60;
9466 statusReport.clear();
9469 externalHealthCheckResponder.clear();
9470 allowPeerForwarding =
false;
9471 multicastInterfaceName.clear();
9474 forwardDiscoveredGroups =
false;
9475 forwardMulticastAddressing =
false;
9477 disableMessageSigning =
false;
9478 multicastRestrictions.clear();
9479 igmpSnooping.clear();
9480 staticReflectors.clear();
9481 tcpTxOptions.clear();
9482 multicastTxOptions.clear();
9483 certStoreFileName.clear();
9484 certStorePasswordHex.clear();
9485 groupRestrictions.clear();
9486 configurationCheckSignalName =
"rts.7b392d1.${id}";
9489 udpStreaming.clear();
9491 normalTaskQueueBias = 0;
9492 enableLeafReflectionReverseSubscription =
false;
9493 disableLoopDetection =
false;
9494 maxSecurityLevel = 0;
9496 streamStatsExport.clear();
9497 maxOutboundPeerConnectionIntervalDeltaSecs = 15;
9498 peerRtTestIntervalMs = 60000;
9499 peerRtBehaviors.clear();
9502 advertising.clear();
9503 extendedGroupRestrictions.clear();
9504 groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
9505 ipFamily = IpFamilyType_t::ifIp4;
9509 allowedDomains.clear();
9510 blockedDomains.clear();
9511 extraDomains.clear();
9513 additionalIdentities.clear();
9514 streamIdPrivacyType = StreamIdPrivacyType_t::sptDefault;
9518 static void to_json(nlohmann::json& j,
const RallypointServer& p)
9521 TOJSON_IMPL(fipsCrypto),
9522 TOJSON_IMPL(watchdog),
9524 TOJSON_IMPL(listenPort),
9525 TOJSON_IMPL(interfaceName),
9526 TOJSON_IMPL(certificate),
9527 TOJSON_IMPL(allowMulticastForwarding),
9529 TOJSON_IMPL(peeringConfigurationFileName),
9530 TOJSON_IMPL(peeringConfigurationFileCommand),
9531 TOJSON_IMPL(peeringConfigurationFileCheckSecs),
9532 TOJSON_IMPL(ioPools),
9533 TOJSON_IMPL(statusReport),
9534 TOJSON_IMPL(limits),
9535 TOJSON_IMPL(linkGraph),
9536 TOJSON_IMPL(externalHealthCheckResponder),
9537 TOJSON_IMPL(allowPeerForwarding),
9538 TOJSON_IMPL(multicastInterfaceName),
9540 TOJSON_IMPL(discovery),
9541 TOJSON_IMPL(forwardDiscoveredGroups),
9542 TOJSON_IMPL(forwardMulticastAddressing),
9543 TOJSON_IMPL(isMeshLeaf),
9544 TOJSON_IMPL(disableMessageSigning),
9545 TOJSON_IMPL(multicastRestrictions),
9546 TOJSON_IMPL(igmpSnooping),
9547 TOJSON_IMPL(staticReflectors),
9548 TOJSON_IMPL(tcpTxOptions),
9549 TOJSON_IMPL(multicastTxOptions),
9550 TOJSON_IMPL(certStoreFileName),
9551 TOJSON_IMPL(certStorePasswordHex),
9552 TOJSON_IMPL(groupRestrictions),
9553 TOJSON_IMPL(configurationCheckSignalName),
9554 TOJSON_IMPL(featureset),
9555 TOJSON_IMPL(licensing),
9556 TOJSON_IMPL(udpStreaming),
9557 TOJSON_IMPL(sysFlags),
9558 TOJSON_IMPL(normalTaskQueueBias),
9559 TOJSON_IMPL(enableLeafReflectionReverseSubscription),
9560 TOJSON_IMPL(disableLoopDetection),
9561 TOJSON_IMPL(maxSecurityLevel),
9562 TOJSON_IMPL(routeMap),
9563 TOJSON_IMPL(streamStatsExport),
9564 TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
9565 TOJSON_IMPL(peerRtTestIntervalMs),
9566 TOJSON_IMPL(peerRtBehaviors),
9567 TOJSON_IMPL(websocket),
9569 TOJSON_IMPL(advertising),
9570 TOJSON_IMPL(extendedGroupRestrictions),
9571 TOJSON_IMPL(groupRestrictionAccessPolicyType),
9572 TOJSON_IMPL(ipFamily),
9573 TOJSON_IMPL(rxCapture),
9574 TOJSON_IMPL(txCapture),
9575 TOJSON_IMPL(domainName),
9576 TOJSON_IMPL(allowedDomains),
9577 TOJSON_IMPL(blockedDomains),
9578 TOJSON_IMPL(extraDomains),
9579 TOJSON_IMPL(tuning),
9580 TOJSON_IMPL(additionalIdentities),
9581 TOJSON_IMPL(streamIdPrivacyType)
9584 static void from_json(
const nlohmann::json& j, RallypointServer& p)
9587 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
9588 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
9589 getOptional<std::string>(
"id", p.id, j);
9590 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9591 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
9592 getOptional<int>(
"listenPort", p.listenPort, j, 7443);
9593 getOptional<bool>(
"allowMulticastForwarding", p.allowMulticastForwarding, j,
false);
9595 getOptional<std::string>(
"peeringConfigurationFileName", p.peeringConfigurationFileName, j);
9596 getOptional<std::string>(
"peeringConfigurationFileCommand", p.peeringConfigurationFileCommand, j);
9597 getOptional<int>(
"peeringConfigurationFileCheckSecs", p.peeringConfigurationFileCheckSecs, j, 60);
9598 getOptional<int>(
"ioPools", p.ioPools, j, -1);
9599 getOptional<RallypointServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
9600 getOptional<RallypointServerLimits>(
"limits", p.limits, j);
9601 getOptional<RallypointServerLinkGraph>(
"linkGraph", p.linkGraph, j);
9602 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
9603 getOptional<bool>(
"allowPeerForwarding", p.allowPeerForwarding, j,
false);
9604 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
9605 getOptional<Tls>(
"tls", p.tls, j);
9606 getOptional<DiscoveryConfiguration>(
"discovery", p.discovery, j);
9607 getOptional<bool>(
"forwardDiscoveredGroups", p.forwardDiscoveredGroups, j,
false);
9608 getOptional<bool>(
"forwardMulticastAddressing", p.forwardMulticastAddressing, j,
false);
9609 getOptional<bool>(
"isMeshLeaf", p.isMeshLeaf, j,
false);
9610 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
9611 getOptional<NetworkAddressRestrictionList>(
"multicastRestrictions", p.multicastRestrictions, j);
9612 getOptional<IgmpSnooping>(
"igmpSnooping", p.igmpSnooping, j);
9613 getOptional<std::vector<RallypointReflector>>(
"staticReflectors", p.staticReflectors, j);
9614 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
9615 getOptional<NetworkTxOptions>(
"multicastTxOptions", p.multicastTxOptions, j);
9616 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
9617 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
9618 getOptional<StringRestrictionList>(
"groupRestrictions", p.groupRestrictions, j);
9619 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
9620 getOptional<Licensing>(
"licensing", p.licensing, j);
9621 getOptional<Featureset>(
"featureset", p.featureset, j);
9622 getOptional<RallypointUdpStreaming>(
"udpStreaming", p.udpStreaming, j);
9623 getOptional<uint32_t>(
"sysFlags", p.sysFlags, j, 0);
9624 getOptional<uint32_t>(
"normalTaskQueueBias", p.normalTaskQueueBias, j, 0);
9625 getOptional<bool>(
"enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j,
false);
9626 getOptional<bool>(
"disableLoopDetection", p.disableLoopDetection, j,
false);
9627 getOptional<uint32_t>(
"maxSecurityLevel", p.maxSecurityLevel, j, 0);
9628 getOptional<RallypointServerRouteMap>(
"routeMap", p.routeMap, j);
9629 getOptional<RallypointServerStreamStatsExport>(
"streamStatsExport", p.streamStatsExport, j);
9630 getOptional<uint32_t>(
"maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
9631 getOptional<int>(
"peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
9632 getOptional<std::vector<RallypointRpRtTimingBehavior>>(
"peerRtBehaviors", p.peerRtBehaviors, j);
9633 getOptional<RallypointWebsocketSettings>(
"websocket", p.websocket, j);
9634 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
9635 getOptional<RallypointAdvertisingSettings>(
"advertising", p.advertising, j);
9636 getOptional<std::vector<RallypointExtendedGroupRestriction>>(
"extendedGroupRestrictions", p.extendedGroupRestrictions, j);
9637 getOptional<GroupRestrictionAccessPolicyType_t>(
"groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
9638 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIp4);
9639 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
9640 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
9641 getOptional<std::string>(
"domainName", p.domainName, j);
9642 getOptional<std::vector<std::string>>(
"allowedDomains", p.allowedDomains, j);
9643 getOptional<std::vector<std::string>>(
"blockedDomains", p.blockedDomains, j);
9644 getOptional<std::vector<std::string>>(
"extraDomains", p.extraDomains, j);
9645 getOptional<TuningSettings>(
"tuning", p.tuning, j);
9646 getOptional<std::vector<NamedIdentity>>(
"additionalIdentities", p.additionalIdentities, j);
9647 getOptional<RallypointServer::StreamIdPrivacyType_t>(
"streamIdPrivacyType", p.streamIdPrivacyType, j, RallypointServer::StreamIdPrivacyType_t::sptDefault);
9651 JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
9663 IMPLEMENT_JSON_SERIALIZATION()
9698 configurationVersion = 0;
9702 static void to_json(nlohmann::json& j,
const PlatformDiscoveredService& p)
9708 TOJSON_IMPL(address),
9710 TOJSON_IMPL(configurationVersion)
9713 static void from_json(
const nlohmann::json& j, PlatformDiscoveredService& p)
9716 getOptional<std::string>(
"id", p.id, j);
9717 getOptional<std::string>(
"type", p.type, j);
9718 getOptional<std::string>(
"name", p.name, j);
9719 getOptional<NetworkAddress>(
"address", p.address, j);
9720 getOptional<std::string>(
"uri", p.uri, j);
9721 getOptional<uint32_t>(
"configurationVersion", p.configurationVersion, j, 0);
9761 IMPLEMENT_JSON_SERIALIZATION()
9807 mostRecentFirst =
true;
9808 startedOnOrAfter = 0;
9809 endedOnOrBefore = 0;
9812 onlyCommitted =
true;
9820 static void to_json(nlohmann::json& j,
const TimelineQueryParameters& p)
9823 TOJSON_IMPL(maxCount),
9824 TOJSON_IMPL(mostRecentFirst),
9825 TOJSON_IMPL(startedOnOrAfter),
9826 TOJSON_IMPL(endedOnOrBefore),
9827 TOJSON_IMPL(onlyDirection),
9828 TOJSON_IMPL(onlyType),
9829 TOJSON_IMPL(onlyCommitted),
9830 TOJSON_IMPL(onlyAlias),
9831 TOJSON_IMPL(onlyNodeId),
9832 TOJSON_IMPL(onlyTxId),
9836 static void from_json(
const nlohmann::json& j, TimelineQueryParameters& p)
9839 getOptional<long>(
"maxCount", p.maxCount, j, 50);
9840 getOptional<bool>(
"mostRecentFirst", p.mostRecentFirst, j,
false);
9841 getOptional<uint64_t>(
"startedOnOrAfter", p.startedOnOrAfter, j, 0);
9842 getOptional<uint64_t>(
"endedOnOrBefore", p.endedOnOrBefore, j, 0);
9843 getOptional<int>(
"onlyDirection", p.onlyDirection, j, 0);
9844 getOptional<int>(
"onlyType", p.onlyType, j, 0);
9845 getOptional<bool>(
"onlyCommitted", p.onlyCommitted, j,
true);
9846 getOptional<std::string>(
"onlyAlias", p.onlyAlias, j, EMPTY_STRING);
9847 getOptional<std::string>(
"onlyNodeId", p.onlyNodeId, j, EMPTY_STRING);
9848 getOptional<int>(
"onlyTxId", p.onlyTxId, j, 0);
9849 getOptional<std::string>(
"sql", p.sql, j, EMPTY_STRING);
9853 JSON_SERIALIZED_CLASS(CertStoreCertificate)
9862 IMPLEMENT_JSON_SERIALIZATION()
9889 certificatePem.clear();
9890 privateKeyPem.clear();
9891 internalData =
nullptr;
9896 static void to_json(nlohmann::json& j,
const CertStoreCertificate& p)
9900 TOJSON_IMPL(certificatePem),
9901 TOJSON_IMPL(privateKeyPem),
9905 static void from_json(
const nlohmann::json& j, CertStoreCertificate& p)
9908 j.at(
"id").get_to(p.id);
9909 j.at(
"certificatePem").get_to(p.certificatePem);
9910 getOptional<std::string>(
"privateKeyPem", p.privateKeyPem, j, EMPTY_STRING);
9911 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
9915 JSON_SERIALIZED_CLASS(CertStore)
9924 IMPLEMENT_JSON_SERIALIZATION()
9945 certificates.clear();
9950 static void to_json(nlohmann::json& j,
const CertStore& p)
9954 TOJSON_IMPL(certificates),
9958 static void from_json(
const nlohmann::json& j, CertStore& p)
9961 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9962 getOptional<std::vector<CertStoreCertificate>>(
"certificates", p.certificates, j);
9963 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
9967 JSON_SERIALIZED_CLASS(CertStoreCertificateElement)
9976 IMPLEMENT_JSON_SERIALIZATION()
10000 hasPrivateKey =
false;
10005 static void to_json(nlohmann::json& j,
const CertStoreCertificateElement& p)
10007 j = nlohmann::json{
10009 TOJSON_IMPL(hasPrivateKey),
10013 if(!p.certificatePem.empty())
10015 j[
"certificatePem"] = p.certificatePem;
10018 static void from_json(
const nlohmann::json& j, CertStoreCertificateElement& p)
10021 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10022 getOptional<bool>(
"hasPrivateKey", p.hasPrivateKey, j,
false);
10023 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
10024 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
10028 JSON_SERIALIZED_CLASS(CertStoreDescriptor)
10037 IMPLEMENT_JSON_SERIALIZATION()
10070 certificates.clear();
10075 static void to_json(nlohmann::json& j,
const CertStoreDescriptor& p)
10077 j = nlohmann::json{
10079 TOJSON_IMPL(fileName),
10080 TOJSON_IMPL(version),
10081 TOJSON_IMPL(flags),
10082 TOJSON_IMPL(certificates),
10086 static void from_json(
const nlohmann::json& j, CertStoreDescriptor& p)
10089 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10090 getOptional<std::string>(
"fileName", p.fileName, j, EMPTY_STRING);
10091 getOptional<int>(
"version", p.version, j, 0);
10092 getOptional<int>(
"flags", p.flags, j, 0);
10093 getOptional<std::vector<CertStoreCertificateElement>>(
"certificates", p.certificates, j);
10094 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
10098 JSON_SERIALIZED_CLASS(CertificateSubjectElement)
10107 IMPLEMENT_JSON_SERIALIZATION()
10129 static void to_json(nlohmann::json& j,
const CertificateSubjectElement& p)
10131 j = nlohmann::json{
10136 static void from_json(
const nlohmann::json& j, CertificateSubjectElement& p)
10139 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
10140 getOptional<std::string>(
"value", p.value, j, EMPTY_STRING);
10145 JSON_SERIALIZED_CLASS(CertificateDescriptor)
10154 IMPLEMENT_JSON_SERIALIZATION()
10203 selfSigned =
false;
10208 fingerprint.clear();
10209 subjectElements.clear();
10210 issuerElements.clear();
10211 certificatePem.clear();
10212 publicKeyPem.clear();
10216 static void to_json(nlohmann::json& j,
const CertificateDescriptor& p)
10218 j = nlohmann::json{
10219 TOJSON_IMPL(subject),
10220 TOJSON_IMPL(issuer),
10221 TOJSON_IMPL(selfSigned),
10222 TOJSON_IMPL(version),
10223 TOJSON_IMPL(notBefore),
10224 TOJSON_IMPL(notAfter),
10225 TOJSON_IMPL(serial),
10226 TOJSON_IMPL(fingerprint),
10227 TOJSON_IMPL(subjectElements),
10228 TOJSON_IMPL(issuerElements),
10229 TOJSON_IMPL(certificatePem),
10230 TOJSON_IMPL(publicKeyPem)
10233 static void from_json(
const nlohmann::json& j, CertificateDescriptor& p)
10236 getOptional<std::string>(
"subject", p.subject, j, EMPTY_STRING);
10237 getOptional<std::string>(
"issuer", p.issuer, j, EMPTY_STRING);
10238 getOptional<bool>(
"selfSigned", p.selfSigned, j,
false);
10239 getOptional<int>(
"version", p.version, j, 0);
10240 getOptional<std::string>(
"notBefore", p.notBefore, j, EMPTY_STRING);
10241 getOptional<std::string>(
"notAfter", p.notAfter, j, EMPTY_STRING);
10242 getOptional<std::string>(
"serial", p.serial, j, EMPTY_STRING);
10243 getOptional<std::string>(
"fingerprint", p.fingerprint, j, EMPTY_STRING);
10244 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
10245 getOptional<std::string>(
"publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
10246 getOptional<std::vector<CertificateSubjectElement>>(
"subjectElements", p.subjectElements, j);
10247 getOptional<std::vector<CertificateSubjectElement>>(
"issuerElements", p.issuerElements, j);
10252 JSON_SERIALIZED_CLASS(RiffDescriptor)
10264 IMPLEMENT_JSON_SERIALIZATION()
10305 certDescriptor.clear();
10310 static void to_json(nlohmann::json& j,
const RiffDescriptor& p)
10312 j = nlohmann::json{
10314 TOJSON_IMPL(verified),
10315 TOJSON_IMPL(channels),
10316 TOJSON_IMPL(sampleCount),
10318 TOJSON_IMPL(certPem),
10319 TOJSON_IMPL(certDescriptor),
10320 TOJSON_IMPL(signature)
10324 static void from_json(
const nlohmann::json& j, RiffDescriptor& p)
10327 FROMJSON_IMPL(file, std::string, EMPTY_STRING);
10328 FROMJSON_IMPL(verified,
bool,
false);
10329 FROMJSON_IMPL(channels,
int, 0);
10330 FROMJSON_IMPL(sampleCount,
int, 0);
10331 FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
10332 FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
10333 getOptional<CertificateDescriptor>(
"certDescriptor", p.certDescriptor, j);
10334 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
10339 JSON_SERIALIZED_CLASS(BridgeCreationDetail)
10348 IMPLEMENT_JSON_SERIALIZATION()
10366 csAlreadyExists = -3,
10369 csInvalidConfiguration = -4,
10372 csInvalidJson = -5,
10375 csInsufficientGroups = -6,
10378 csTooManyGroups = -7,
10381 csDuplicateGroup = -8,
10384 csLocalLoopDetected = -9,
10385 } CreationStatus_t;
10401 status = csUndefined;
10405 static void to_json(nlohmann::json& j,
const BridgeCreationDetail& p)
10407 j = nlohmann::json{
10409 TOJSON_IMPL(status)
10412 static void from_json(
const nlohmann::json& j, BridgeCreationDetail& p)
10415 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10416 getOptional<BridgeCreationDetail::CreationStatus_t>(
"status", p.status, j, BridgeCreationDetail::CreationStatus_t::csUndefined);
10419 JSON_SERIALIZED_CLASS(GroupConnectionDetail)
10428 IMPLEMENT_JSON_SERIALIZATION()
10440 ctDirectDatagram = 1,
10444 } ConnectionType_t;
10469 connectionType = ctUndefined;
10471 asFailover =
false;
10476 static void to_json(nlohmann::json& j,
const GroupConnectionDetail& p)
10478 j = nlohmann::json{
10480 TOJSON_IMPL(connectionType),
10482 TOJSON_IMPL(asFailover),
10483 TOJSON_IMPL(reason)
10488 j[
"asFailover"] = p.asFailover;
10491 static void from_json(
const nlohmann::json& j, GroupConnectionDetail& p)
10494 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10495 getOptional<GroupConnectionDetail::ConnectionType_t>(
"connectionType", p.connectionType, j, GroupConnectionDetail::ConnectionType_t::ctUndefined);
10496 getOptional<std::string>(
"peer", p.peer, j, EMPTY_STRING);
10497 getOptional<bool>(
"asFailover", p.asFailover, j,
false);
10498 getOptional<std::string>(
"reason", p.reason, j, EMPTY_STRING);
10502 JSON_SERIALIZED_CLASS(GroupTxDetail)
10511 IMPLEMENT_JSON_SERIALIZATION()
10529 txsNotAnAudioGroup = -1,
10535 txsNotConnected = -3,
10538 txsAlreadyTransmitting = -4,
10541 txsInvalidParams = -5,
10544 txsPriorityTooLow = -6,
10547 txsRxActiveOnNonFdx = -7,
10550 txsCannotSubscribeToInput = -8,
10556 txsTxEndedWithFailure = -10,
10559 txsBridgedButNotMultistream = -11,
10562 txsAutoEndedDueToNonMultistreamBridge = -12,
10565 txsReBeginWithoutPriorBegin = -13
10594 status = txsUndefined;
10596 remotePriority = 0;
10597 nonFdxMsHangRemaining = 0;
10602 static void to_json(nlohmann::json& j,
const GroupTxDetail& p)
10604 j = nlohmann::json{
10606 TOJSON_IMPL(status),
10607 TOJSON_IMPL(localPriority),
10612 if(p.status == GroupTxDetail::TxStatus_t::txsPriorityTooLow)
10614 j[
"remotePriority"] = p.remotePriority;
10616 else if(p.status == GroupTxDetail::TxStatus_t::txsRxActiveOnNonFdx)
10618 j[
"nonFdxMsHangRemaining"] = p.nonFdxMsHangRemaining;
10621 static void from_json(
const nlohmann::json& j, GroupTxDetail& p)
10624 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10625 getOptional<GroupTxDetail::TxStatus_t>(
"status", p.status, j, GroupTxDetail::TxStatus_t::txsUndefined);
10626 getOptional<int>(
"localPriority", p.localPriority, j, 0);
10627 getOptional<int>(
"remotePriority", p.remotePriority, j, 0);
10628 getOptional<long>(
"nonFdxMsHangRemaining", p.nonFdxMsHangRemaining, j, 0);
10629 getOptional<uint32_t>(
"txId", p.txId, j, 0);
10633 JSON_SERIALIZED_CLASS(GroupCreationDetail)
10642 IMPLEMENT_JSON_SERIALIZATION()
10660 csConflictingRpListAndCluster = -2,
10663 csAlreadyExists = -3,
10666 csInvalidConfiguration = -4,
10669 csInvalidJson = -5,
10672 csCryptoFailure = -6,
10675 csAudioInputFailure = -7,
10678 csAudioOutputFailure = -8,
10681 csUnsupportedAudioEncoder = -9,
10687 csInvalidTransport = -11,
10690 csAudioInputDeviceNotFound = -12,
10693 csAudioOutputDeviceNotFound = -13
10694 } CreationStatus_t;
10710 status = csUndefined;
10714 static void to_json(nlohmann::json& j,
const GroupCreationDetail& p)
10716 j = nlohmann::json{
10718 TOJSON_IMPL(status)
10721 static void from_json(
const nlohmann::json& j, GroupCreationDetail& p)
10724 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10725 getOptional<GroupCreationDetail::CreationStatus_t>(
"status", p.status, j, GroupCreationDetail::CreationStatus_t::csUndefined);
10730 JSON_SERIALIZED_CLASS(GroupReconfigurationDetail)
10739 IMPLEMENT_JSON_SERIALIZATION()
10757 rsInvalidConfiguration = -2,
10760 rsInvalidJson = -3,
10763 rsAudioInputFailure = -4,
10766 rsAudioOutputFailure = -5,
10769 rsDoesNotExist = -6,
10772 rsAudioInputInUse = -7,
10775 rsAudioDisabledForGroup = -8,
10778 rsGroupIsNotAudio = -9
10779 } ReconfigurationStatus_t;
10795 status = rsUndefined;
10799 static void to_json(nlohmann::json& j,
const GroupReconfigurationDetail& p)
10801 j = nlohmann::json{
10803 TOJSON_IMPL(status)
10806 static void from_json(
const nlohmann::json& j, GroupReconfigurationDetail& p)
10809 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10810 getOptional<GroupReconfigurationDetail::ReconfigurationStatus_t>(
"status", p.status, j, GroupReconfigurationDetail::ReconfigurationStatus_t::rsUndefined);
10815 JSON_SERIALIZED_CLASS(GroupHealthReport)
10824 IMPLEMENT_JSON_SERIALIZATION()
10830 uint64_t lastErrorTs;
10831 uint64_t decryptionErrors;
10832 uint64_t encryptionErrors;
10833 uint64_t unsupportDecoderErrors;
10834 uint64_t decoderFailures;
10835 uint64_t decoderStartFailures;
10836 uint64_t inboundRtpPacketAllocationFailures;
10837 uint64_t inboundRtpPacketLoadFailures;
10838 uint64_t latePacketsDiscarded;
10839 uint64_t jitterBufferInsertionFailures;
10840 uint64_t presenceDeserializationFailures;
10841 uint64_t notRtpErrors;
10842 uint64_t generalErrors;
10843 uint64_t inboundRtpProcessorAllocationFailures;
10854 decryptionErrors = 0;
10855 encryptionErrors = 0;
10856 unsupportDecoderErrors = 0;
10857 decoderFailures = 0;
10858 decoderStartFailures = 0;
10859 inboundRtpPacketAllocationFailures = 0;
10860 inboundRtpPacketLoadFailures = 0;
10861 latePacketsDiscarded = 0;
10862 jitterBufferInsertionFailures = 0;
10863 presenceDeserializationFailures = 0;
10866 inboundRtpProcessorAllocationFailures = 0;
10872 j = nlohmann::json{
10874 TOJSON_IMPL(lastErrorTs),
10875 TOJSON_IMPL(decryptionErrors),
10876 TOJSON_IMPL(encryptionErrors),
10877 TOJSON_IMPL(unsupportDecoderErrors),
10878 TOJSON_IMPL(decoderFailures),
10879 TOJSON_IMPL(decoderStartFailures),
10880 TOJSON_IMPL(inboundRtpPacketAllocationFailures),
10881 TOJSON_IMPL(inboundRtpPacketLoadFailures),
10882 TOJSON_IMPL(latePacketsDiscarded),
10883 TOJSON_IMPL(jitterBufferInsertionFailures),
10884 TOJSON_IMPL(presenceDeserializationFailures),
10885 TOJSON_IMPL(notRtpErrors),
10886 TOJSON_IMPL(generalErrors),
10887 TOJSON_IMPL(inboundRtpProcessorAllocationFailures)
10890 static void from_json(
const nlohmann::json& j, GroupHealthReport& p)
10893 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10894 getOptional<uint64_t>(
"lastErrorTs", p.lastErrorTs, j, 0);
10895 getOptional<uint64_t>(
"decryptionErrors", p.decryptionErrors, j, 0);
10896 getOptional<uint64_t>(
"encryptionErrors", p.encryptionErrors, j, 0);
10897 getOptional<uint64_t>(
"unsupportDecoderErrors", p.unsupportDecoderErrors, j, 0);
10898 getOptional<uint64_t>(
"decoderFailures", p.decoderFailures, j, 0);
10899 getOptional<uint64_t>(
"decoderStartFailures", p.decoderStartFailures, j, 0);
10900 getOptional<uint64_t>(
"inboundRtpPacketAllocationFailures", p.inboundRtpPacketAllocationFailures, j, 0);
10901 getOptional<uint64_t>(
"inboundRtpPacketLoadFailures", p.inboundRtpPacketLoadFailures, j, 0);
10902 getOptional<uint64_t>(
"latePacketsDiscarded", p.latePacketsDiscarded, j, 0);
10903 getOptional<uint64_t>(
"jitterBufferInsertionFailures", p.jitterBufferInsertionFailures, j, 0);
10904 getOptional<uint64_t>(
"presenceDeserializationFailures", p.presenceDeserializationFailures, j, 0);
10905 getOptional<uint64_t>(
"notRtpErrors", p.notRtpErrors, j, 0);
10906 getOptional<uint64_t>(
"generalErrors", p.generalErrors, j, 0);
10907 getOptional<uint64_t>(
"inboundRtpProcessorAllocationFailures", p.inboundRtpProcessorAllocationFailures, j, 0);
10911 JSON_SERIALIZED_CLASS(InboundProcessorStats)
10920 IMPLEMENT_JSON_SERIALIZATION()
10927 uint64_t minRtpSamplesInQueue;
10928 uint64_t maxRtpSamplesInQueue;
10929 uint64_t totalSamplesTrimmed;
10930 uint64_t underruns;
10932 uint64_t samplesInQueue;
10933 uint64_t totalPacketsReceived;
10934 uint64_t totalPacketsLost;
10935 uint64_t totalPacketsDiscarded;
10946 minRtpSamplesInQueue = 0;
10947 maxRtpSamplesInQueue = 0;
10948 totalSamplesTrimmed = 0;
10951 samplesInQueue = 0;
10952 totalPacketsReceived = 0;
10953 totalPacketsLost = 0;
10954 totalPacketsDiscarded = 0;
10960 j = nlohmann::json{
10962 TOJSON_IMPL(jitter),
10963 TOJSON_IMPL(minRtpSamplesInQueue),
10964 TOJSON_IMPL(maxRtpSamplesInQueue),
10965 TOJSON_IMPL(totalSamplesTrimmed),
10966 TOJSON_IMPL(underruns),
10967 TOJSON_IMPL(overruns),
10968 TOJSON_IMPL(samplesInQueue),
10969 TOJSON_IMPL(totalPacketsReceived),
10970 TOJSON_IMPL(totalPacketsLost),
10971 TOJSON_IMPL(totalPacketsDiscarded)
10974 static void from_json(
const nlohmann::json& j, InboundProcessorStats& p)
10977 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
10978 getOptional<double>(
"jitter", p.jitter, j, 0.0);
10979 getOptional<uint64_t>(
"minRtpSamplesInQueue", p.minRtpSamplesInQueue, j, 0);
10980 getOptional<uint64_t>(
"maxRtpSamplesInQueue", p.maxRtpSamplesInQueue, j, 0);
10981 getOptional<uint64_t>(
"totalSamplesTrimmed", p.totalSamplesTrimmed, j, 0);
10982 getOptional<uint64_t>(
"underruns", p.underruns, j, 0);
10983 getOptional<uint64_t>(
"overruns", p.overruns, j, 0);
10984 getOptional<uint64_t>(
"samplesInQueue", p.samplesInQueue, j, 0);
10985 getOptional<uint64_t>(
"totalPacketsReceived", p.totalPacketsReceived, j, 0);
10986 getOptional<uint64_t>(
"totalPacketsLost", p.totalPacketsLost, j, 0);
10987 getOptional<uint64_t>(
"totalPacketsDiscarded", p.totalPacketsDiscarded, j, 0);
10991 JSON_SERIALIZED_CLASS(TrafficCounter)
11000 IMPLEMENT_JSON_SERIALIZATION()
11024 j = nlohmann::json{
11025 TOJSON_IMPL(packets),
11026 TOJSON_IMPL(bytes),
11027 TOJSON_IMPL(errors)
11030 static void from_json(
const nlohmann::json& j, TrafficCounter& p)
11033 getOptional<uint64_t>(
"packets", p.packets, j, 0);
11034 getOptional<uint64_t>(
"bytes", p.bytes, j, 0);
11035 getOptional<uint64_t>(
"errors", p.errors, j, 0);
11039 JSON_SERIALIZED_CLASS(GroupStats)
11048 IMPLEMENT_JSON_SERIALIZATION()
11049 IMPLEMENT_WRAPPED_JSON_SERIALIZATION(
GroupStats)
11072 static void to_json(nlohmann::json& j,
const GroupStats& p)
11074 j = nlohmann::json{
11077 TOJSON_IMPL(rxTraffic),
11078 TOJSON_IMPL(txTraffic)
11081 static void from_json(
const nlohmann::json& j, GroupStats& p)
11084 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11086 getOptional<TrafficCounter>(
"rxTraffic", p.rxTraffic, j);
11087 getOptional<TrafficCounter>(
"txTraffic", p.txTraffic, j);
11091 JSON_SERIALIZED_CLASS(RallypointConnectionDetail)
11100 IMPLEMENT_JSON_SERIALIZATION()
11127 internalId.clear();
11130 msToNextConnectionAttempt = 0;
11131 serverProcessingMs = -1.0f;
11135 static void to_json(nlohmann::json& j,
const RallypointConnectionDetail& p)
11137 j = nlohmann::json{
11138 TOJSON_IMPL(internalId),
11143 if(p.msToNextConnectionAttempt > 0)
11145 j[
"msToNextConnectionAttempt"] = p.msToNextConnectionAttempt;
11148 if(p.serverProcessingMs >= 0.0)
11150 j[
"serverProcessingMs"] = p.serverProcessingMs;
11153 static void from_json(
const nlohmann::json& j, RallypointConnectionDetail& p)
11156 getOptional<std::string>(
"internalId", p.internalId, j, EMPTY_STRING);
11157 getOptional<std::string>(
"host", p.host, j, EMPTY_STRING);
11158 getOptional<int>(
"port", p.port, j, 0);
11159 getOptional<uint64_t>(
"msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
11160 getOptional<float>(
"serverProcessingMs", p.serverProcessingMs, j, -1.0);
11164 JSON_SERIALIZED_CLASS(TranslationSession)
11176 IMPLEMENT_JSON_SERIALIZATION()
11206 static void to_json(nlohmann::json& j,
const TranslationSession& p)
11208 j = nlohmann::json{
11211 TOJSON_IMPL(groups),
11212 TOJSON_IMPL(enabled)
11215 static void from_json(
const nlohmann::json& j, TranslationSession& p)
11218 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
11219 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
11220 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
11221 FROMJSON_IMPL(enabled,
bool,
true);
11225 JSON_SERIALIZED_CLASS(TranslationConfiguration)
11237 IMPLEMENT_JSON_SERIALIZATION()
11259 static void to_json(nlohmann::json& j,
const TranslationConfiguration& p)
11261 j = nlohmann::json{
11262 TOJSON_IMPL(sessions),
11263 TOJSON_IMPL(groups)
11266 static void from_json(
const nlohmann::json& j, TranslationConfiguration& p)
11269 getOptional<std::vector<TranslationSession>>(
"sessions", p.sessions, j);
11270 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11274 JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
11286 IMPLEMENT_JSON_SERIALIZATION()
11321 includeGroupDetail =
false;
11322 includeSessionDetail =
false;
11323 includeSessionGroupDetail =
false;
11328 static void to_json(nlohmann::json& j,
const LingoServerStatusReportConfiguration& p)
11330 j = nlohmann::json{
11331 TOJSON_IMPL(fileName),
11332 TOJSON_IMPL(intervalSecs),
11333 TOJSON_IMPL(enabled),
11334 TOJSON_IMPL(includeGroupDetail),
11335 TOJSON_IMPL(includeSessionDetail),
11336 TOJSON_IMPL(includeSessionGroupDetail),
11337 TOJSON_IMPL(runCmd)
11340 static void from_json(
const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
11343 getOptional<std::string>(
"fileName", p.fileName, j);
11344 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11345 getOptional<bool>(
"enabled", p.enabled, j,
false);
11346 getOptional<std::string>(
"runCmd", p.runCmd, j);
11347 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11348 getOptional<bool>(
"includeSessionDetail", p.includeSessionDetail, j,
false);
11349 getOptional<bool>(
"includeSessionGroupDetail", p.includeSessionGroupDetail, j,
false);
11353 JSON_SERIALIZED_CLASS(LingoServerInternals)
11367 IMPLEMENT_JSON_SERIALIZATION()
11389 housekeeperIntervalMs = 1000;
11393 static void to_json(nlohmann::json& j,
const LingoServerInternals& p)
11395 j = nlohmann::json{
11396 TOJSON_IMPL(watchdog),
11397 TOJSON_IMPL(housekeeperIntervalMs),
11398 TOJSON_IMPL(tuning)
11401 static void from_json(
const nlohmann::json& j, LingoServerInternals& p)
11404 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11405 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11406 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11410 JSON_SERIALIZED_CLASS(LingoServerConfiguration)
11421 IMPLEMENT_JSON_SERIALIZATION()
11478 serviceConfigurationFileCheckSecs = 60;
11479 lingoConfigurationFileName.clear();
11480 lingoConfigurationFileCommand.clear();
11481 lingoConfigurationFileCheckSecs = 60;
11482 statusReport.clear();
11483 externalHealthCheckResponder.clear();
11485 certStoreFileName.clear();
11486 certStorePasswordHex.clear();
11487 enginePolicy.clear();
11488 configurationCheckSignalName =
"rts.22f4ec3.${id}";
11489 fipsCrypto.clear();
11495 static void to_json(nlohmann::json& j,
const LingoServerConfiguration& p)
11497 j = nlohmann::json{
11499 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11500 TOJSON_IMPL(lingoConfigurationFileName),
11501 TOJSON_IMPL(lingoConfigurationFileCommand),
11502 TOJSON_IMPL(lingoConfigurationFileCheckSecs),
11503 TOJSON_IMPL(statusReport),
11504 TOJSON_IMPL(externalHealthCheckResponder),
11505 TOJSON_IMPL(internals),
11506 TOJSON_IMPL(certStoreFileName),
11507 TOJSON_IMPL(certStorePasswordHex),
11508 TOJSON_IMPL(enginePolicy),
11509 TOJSON_IMPL(configurationCheckSignalName),
11510 TOJSON_IMPL(fipsCrypto),
11511 TOJSON_IMPL(proxy),
11515 static void from_json(
const nlohmann::json& j, LingoServerConfiguration& p)
11518 getOptional<std::string>(
"id", p.id, j);
11519 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11520 getOptional<std::string>(
"lingoConfigurationFileName", p.lingoConfigurationFileName, j);
11521 getOptional<std::string>(
"lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
11522 getOptional<int>(
"lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
11523 getOptional<LingoServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11524 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11525 getOptional<LingoServerInternals>(
"internals", p.internals, j);
11526 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11527 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11528 j.at(
"enginePolicy").get_to(p.enginePolicy);
11529 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.22f4ec3.${id}");
11530 getOptional<FipsCryptoSettings>(
"fipsCrypo", p.fipsCrypto, j);
11531 getOptional<NetworkAddress>(
"proxy", p.proxy, j);
11532 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11537 JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
11549 IMPLEMENT_JSON_SERIALIZATION()
11579 static void to_json(nlohmann::json& j,
const VoiceToVoiceSession& p)
11581 j = nlohmann::json{
11584 TOJSON_IMPL(groups),
11585 TOJSON_IMPL(enabled)
11588 static void from_json(
const nlohmann::json& j, VoiceToVoiceSession& p)
11591 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
11592 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
11593 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
11594 FROMJSON_IMPL(enabled,
bool,
true);
11598 JSON_SERIALIZED_CLASS(LingoConfiguration)
11610 IMPLEMENT_JSON_SERIALIZATION()
11627 voiceToVoiceSessions.clear();
11632 static void to_json(nlohmann::json& j,
const LingoConfiguration& p)
11634 j = nlohmann::json{
11635 TOJSON_IMPL(voiceToVoiceSessions),
11636 TOJSON_IMPL(groups)
11639 static void from_json(
const nlohmann::json& j, LingoConfiguration& p)
11642 getOptional<std::vector<VoiceToVoiceSession>>(
"voiceToVoiceSessions", p.voiceToVoiceSessions, j);
11643 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11647 JSON_SERIALIZED_CLASS(BridgingConfiguration)
11659 IMPLEMENT_JSON_SERIALIZATION()
11681 static void to_json(nlohmann::json& j,
const BridgingConfiguration& p)
11683 j = nlohmann::json{
11684 TOJSON_IMPL(bridges),
11685 TOJSON_IMPL(groups)
11688 static void from_json(
const nlohmann::json& j, BridgingConfiguration& p)
11691 getOptional<std::vector<Bridge>>(
"bridges", p.bridges, j);
11692 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11696 JSON_SERIALIZED_CLASS(BridgingServerStatusReportConfiguration)
11708 IMPLEMENT_JSON_SERIALIZATION()
11743 includeGroupDetail =
false;
11744 includeBridgeDetail =
false;
11745 includeBridgeGroupDetail =
false;
11750 static void to_json(nlohmann::json& j,
const BridgingServerStatusReportConfiguration& p)
11752 j = nlohmann::json{
11753 TOJSON_IMPL(fileName),
11754 TOJSON_IMPL(intervalSecs),
11755 TOJSON_IMPL(enabled),
11756 TOJSON_IMPL(includeGroupDetail),
11757 TOJSON_IMPL(includeBridgeDetail),
11758 TOJSON_IMPL(includeBridgeGroupDetail),
11759 TOJSON_IMPL(runCmd)
11762 static void from_json(
const nlohmann::json& j, BridgingServerStatusReportConfiguration& p)
11765 getOptional<std::string>(
"fileName", p.fileName, j);
11766 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11767 getOptional<bool>(
"enabled", p.enabled, j,
false);
11768 getOptional<std::string>(
"runCmd", p.runCmd, j);
11769 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11770 getOptional<bool>(
"includeBridgeDetail", p.includeBridgeDetail, j,
false);
11771 getOptional<bool>(
"includeBridgeGroupDetail", p.includeBridgeGroupDetail, j,
false);
11775 JSON_SERIALIZED_CLASS(BridgingServerInternals)
11789 IMPLEMENT_JSON_SERIALIZATION()
11811 housekeeperIntervalMs = 1000;
11815 static void to_json(nlohmann::json& j,
const BridgingServerInternals& p)
11817 j = nlohmann::json{
11818 TOJSON_IMPL(watchdog),
11819 TOJSON_IMPL(housekeeperIntervalMs),
11820 TOJSON_IMPL(tuning)
11823 static void from_json(
const nlohmann::json& j, BridgingServerInternals& p)
11826 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11827 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11828 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11832 JSON_SERIALIZED_CLASS(BridgingServerConfiguration)
11843 IMPLEMENT_JSON_SERIALIZATION()
11867 omADictatedByGroup = 3,
11924 serviceConfigurationFileCheckSecs = 60;
11925 bridgingConfigurationFileName.clear();
11926 bridgingConfigurationFileCommand.clear();
11927 bridgingConfigurationFileCheckSecs = 60;
11928 statusReport.clear();
11929 externalHealthCheckResponder.clear();
11931 certStoreFileName.clear();
11932 certStorePasswordHex.clear();
11933 enginePolicy.clear();
11934 configurationCheckSignalName =
"rts.6cc0651.${id}";
11935 fipsCrypto.clear();
11940 static void to_json(nlohmann::json& j,
const BridgingServerConfiguration& p)
11942 j = nlohmann::json{
11945 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11946 TOJSON_IMPL(bridgingConfigurationFileName),
11947 TOJSON_IMPL(bridgingConfigurationFileCommand),
11948 TOJSON_IMPL(bridgingConfigurationFileCheckSecs),
11949 TOJSON_IMPL(statusReport),
11950 TOJSON_IMPL(externalHealthCheckResponder),
11951 TOJSON_IMPL(internals),
11952 TOJSON_IMPL(certStoreFileName),
11953 TOJSON_IMPL(certStorePasswordHex),
11954 TOJSON_IMPL(enginePolicy),
11955 TOJSON_IMPL(configurationCheckSignalName),
11956 TOJSON_IMPL(fipsCrypto),
11960 static void from_json(
const nlohmann::json& j, BridgingServerConfiguration& p)
11963 getOptional<std::string>(
"id", p.id, j);
11964 getOptional<BridgingServerConfiguration::OpMode_t>(
"mode", p.mode, j, BridgingServerConfiguration::OpMode_t::omRaw);
11965 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11966 getOptional<std::string>(
"bridgingConfigurationFileName", p.bridgingConfigurationFileName, j);
11967 getOptional<std::string>(
"bridgingConfigurationFileCommand", p.bridgingConfigurationFileCommand, j);
11968 getOptional<int>(
"bridgingConfigurationFileCheckSecs", p.bridgingConfigurationFileCheckSecs, j, 60);
11969 getOptional<BridgingServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11970 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11971 getOptional<BridgingServerInternals>(
"internals", p.internals, j);
11972 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11973 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11974 j.at(
"enginePolicy").get_to(p.enginePolicy);
11975 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.6cc0651.${id}");
11976 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11977 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11982 JSON_SERIALIZED_CLASS(EarGroupsConfiguration)
11994 IMPLEMENT_JSON_SERIALIZATION()
12012 static void to_json(nlohmann::json& j,
const EarGroupsConfiguration& p)
12014 j = nlohmann::json{
12015 TOJSON_IMPL(groups)
12018 static void from_json(
const nlohmann::json& j, EarGroupsConfiguration& p)
12021 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12025 JSON_SERIALIZED_CLASS(EarServerStatusReportConfiguration)
12037 IMPLEMENT_JSON_SERIALIZATION()
12066 includeGroupDetail =
false;
12071 static void to_json(nlohmann::json& j,
const EarServerStatusReportConfiguration& p)
12073 j = nlohmann::json{
12074 TOJSON_IMPL(fileName),
12075 TOJSON_IMPL(intervalSecs),
12076 TOJSON_IMPL(enabled),
12077 TOJSON_IMPL(includeGroupDetail),
12078 TOJSON_IMPL(runCmd)
12081 static void from_json(
const nlohmann::json& j, EarServerStatusReportConfiguration& p)
12084 getOptional<std::string>(
"fileName", p.fileName, j);
12085 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12086 getOptional<bool>(
"enabled", p.enabled, j,
false);
12087 getOptional<std::string>(
"runCmd", p.runCmd, j);
12088 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12092 JSON_SERIALIZED_CLASS(EarServerInternals)
12106 IMPLEMENT_JSON_SERIALIZATION()
12128 housekeeperIntervalMs = 1000;
12132 static void to_json(nlohmann::json& j,
const EarServerInternals& p)
12134 j = nlohmann::json{
12135 TOJSON_IMPL(watchdog),
12136 TOJSON_IMPL(housekeeperIntervalMs),
12137 TOJSON_IMPL(tuning)
12140 static void from_json(
const nlohmann::json& j, EarServerInternals& p)
12143 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12144 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12145 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12149 JSON_SERIALIZED_CLASS(EarServerConfiguration)
12160 IMPLEMENT_JSON_SERIALIZATION()
12215 serviceConfigurationFileCheckSecs = 60;
12216 groupsConfigurationFileName.clear();
12217 groupsConfigurationFileCommand.clear();
12218 groupsConfigurationFileCheckSecs = 60;
12219 statusReport.clear();
12220 externalHealthCheckResponder.clear();
12222 certStoreFileName.clear();
12223 certStorePasswordHex.clear();
12224 enginePolicy.clear();
12225 configurationCheckSignalName =
"rts.9a164fa.${id}";
12226 fipsCrypto.clear();
12231 static void to_json(nlohmann::json& j,
const EarServerConfiguration& p)
12233 j = nlohmann::json{
12235 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12236 TOJSON_IMPL(groupsConfigurationFileName),
12237 TOJSON_IMPL(groupsConfigurationFileCommand),
12238 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
12239 TOJSON_IMPL(statusReport),
12240 TOJSON_IMPL(externalHealthCheckResponder),
12241 TOJSON_IMPL(internals),
12242 TOJSON_IMPL(certStoreFileName),
12243 TOJSON_IMPL(certStorePasswordHex),
12244 TOJSON_IMPL(enginePolicy),
12245 TOJSON_IMPL(configurationCheckSignalName),
12246 TOJSON_IMPL(fipsCrypto),
12250 static void from_json(
const nlohmann::json& j, EarServerConfiguration& p)
12253 getOptional<std::string>(
"id", p.id, j);
12254 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12255 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
12256 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
12257 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
12258 getOptional<EarServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12259 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12260 getOptional<EarServerInternals>(
"internals", p.internals, j);
12261 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12262 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12263 j.at(
"enginePolicy").get_to(p.enginePolicy);
12264 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
12265 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12266 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
12270 JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
12282 IMPLEMENT_JSON_SERIALIZATION()
12300 static void to_json(nlohmann::json& j,
const EngageSemGroupsConfiguration& p)
12302 j = nlohmann::json{
12303 TOJSON_IMPL(groups)
12306 static void from_json(
const nlohmann::json& j, EngageSemGroupsConfiguration& p)
12309 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12313 JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
12325 IMPLEMENT_JSON_SERIALIZATION()
12354 includeGroupDetail =
false;
12359 static void to_json(nlohmann::json& j,
const EngageSemServerStatusReportConfiguration& p)
12361 j = nlohmann::json{
12362 TOJSON_IMPL(fileName),
12363 TOJSON_IMPL(intervalSecs),
12364 TOJSON_IMPL(enabled),
12365 TOJSON_IMPL(includeGroupDetail),
12366 TOJSON_IMPL(runCmd)
12369 static void from_json(
const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
12372 getOptional<std::string>(
"fileName", p.fileName, j);
12373 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12374 getOptional<bool>(
"enabled", p.enabled, j,
false);
12375 getOptional<std::string>(
"runCmd", p.runCmd, j);
12376 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12380 JSON_SERIALIZED_CLASS(EngageSemServerInternals)
12394 IMPLEMENT_JSON_SERIALIZATION()
12416 housekeeperIntervalMs = 1000;
12420 static void to_json(nlohmann::json& j,
const EngageSemServerInternals& p)
12422 j = nlohmann::json{
12423 TOJSON_IMPL(watchdog),
12424 TOJSON_IMPL(housekeeperIntervalMs),
12425 TOJSON_IMPL(tuning)
12428 static void from_json(
const nlohmann::json& j, EngageSemServerInternals& p)
12431 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12432 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12433 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12437 JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
12448 IMPLEMENT_JSON_SERIALIZATION()
12509 serviceConfigurationFileCheckSecs = 60;
12510 groupsConfigurationFileName.clear();
12511 groupsConfigurationFileCommand.clear();
12512 groupsConfigurationFileCheckSecs = 60;
12513 statusReport.clear();
12514 externalHealthCheckResponder.clear();
12516 certStoreFileName.clear();
12517 certStorePasswordHex.clear();
12518 enginePolicy.clear();
12519 configurationCheckSignalName =
"rts.9a164fa.${id}";
12520 fipsCrypto.clear();
12525 maxQueuingMs = 15000;
12531 static void to_json(nlohmann::json& j,
const EngageSemServerConfiguration& p)
12533 j = nlohmann::json{
12535 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12536 TOJSON_IMPL(groupsConfigurationFileName),
12537 TOJSON_IMPL(groupsConfigurationFileCommand),
12538 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
12539 TOJSON_IMPL(statusReport),
12540 TOJSON_IMPL(externalHealthCheckResponder),
12541 TOJSON_IMPL(internals),
12542 TOJSON_IMPL(certStoreFileName),
12543 TOJSON_IMPL(certStorePasswordHex),
12544 TOJSON_IMPL(enginePolicy),
12545 TOJSON_IMPL(configurationCheckSignalName),
12546 TOJSON_IMPL(fipsCrypto),
12548 TOJSON_IMPL(maxQueueLen),
12549 TOJSON_IMPL(minQueuingMs),
12550 TOJSON_IMPL(maxQueuingMs),
12551 TOJSON_IMPL(minPriority),
12552 TOJSON_IMPL(maxPriority)
12555 static void from_json(
const nlohmann::json& j, EngageSemServerConfiguration& p)
12558 getOptional<std::string>(
"id", p.id, j);
12559 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12560 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
12561 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
12562 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
12563 getOptional<EngageSemServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12564 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12565 getOptional<EngageSemServerInternals>(
"internals", p.internals, j);
12566 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12567 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12568 j.at(
"enginePolicy").get_to(p.enginePolicy);
12569 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
12570 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12571 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
12572 getOptional<int>(
"maxQueueLen", p.maxQueueLen, j, 64);
12573 getOptional<int>(
"minQueuingMs", p.minQueuingMs, j, 0);
12574 getOptional<int>(
"maxQueuingMs", p.maxQueuingMs, j, 15000);
12575 getOptional<int>(
"minPriority", p.minPriority, j, 0);
12576 getOptional<int>(
"maxPriority", p.maxPriority, j, 255);
12580 JSON_SERIALIZED_CLASS(EngateGroup)
12592 IMPLEMENT_JSON_SERIALIZATION()
12597 uint32_t inputHangMs;
12598 uint32_t inputActivationPowerThreshold;
12599 uint32_t inputDeactivationPowerThreshold;
12611 inputActivationPowerThreshold = 700;
12612 inputDeactivationPowerThreshold = 125;
12616 static void to_json(nlohmann::json& j,
const EngateGroup& p)
12619 to_json(g,
static_cast<const Group&
>(p));
12621 j = nlohmann::json{
12622 TOJSON_IMPL(useVad),
12623 TOJSON_IMPL(inputHangMs),
12624 TOJSON_IMPL(inputActivationPowerThreshold),
12625 TOJSON_IMPL(inputDeactivationPowerThreshold)
12628 static void from_json(
const nlohmann::json& j, EngateGroup& p)
12631 from_json(j,
static_cast<Group&
>(p));
12632 getOptional<uint32_t>(
"inputHangMs", p.inputHangMs, j, 750);
12633 getOptional<uint32_t>(
"inputActivationPowerThreshold", p.inputActivationPowerThreshold, j, 700);
12634 getOptional<uint32_t>(
"inputDeactivationPowerThreshold", p.inputDeactivationPowerThreshold, j, 125);
12638 JSON_SERIALIZED_CLASS(EngateGroupsConfiguration)
12650 IMPLEMENT_JSON_SERIALIZATION()
12668 static void to_json(nlohmann::json& j,
const EngateGroupsConfiguration& p)
12670 j = nlohmann::json{
12671 TOJSON_IMPL(groups)
12674 static void from_json(
const nlohmann::json& j, EngateGroupsConfiguration& p)
12677 getOptional<std::vector<EngateGroup>>(
"groups", p.groups, j);
12681 JSON_SERIALIZED_CLASS(EngateServerStatusReportConfiguration)
12693 IMPLEMENT_JSON_SERIALIZATION()
12722 includeGroupDetail =
false;
12727 static void to_json(nlohmann::json& j,
const EngateServerStatusReportConfiguration& p)
12729 j = nlohmann::json{
12730 TOJSON_IMPL(fileName),
12731 TOJSON_IMPL(intervalSecs),
12732 TOJSON_IMPL(enabled),
12733 TOJSON_IMPL(includeGroupDetail),
12734 TOJSON_IMPL(runCmd)
12737 static void from_json(
const nlohmann::json& j, EngateServerStatusReportConfiguration& p)
12740 getOptional<std::string>(
"fileName", p.fileName, j);
12741 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12742 getOptional<bool>(
"enabled", p.enabled, j,
false);
12743 getOptional<std::string>(
"runCmd", p.runCmd, j);
12744 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12748 JSON_SERIALIZED_CLASS(EngateServerInternals)
12762 IMPLEMENT_JSON_SERIALIZATION()
12784 housekeeperIntervalMs = 1000;
12788 static void to_json(nlohmann::json& j,
const EngateServerInternals& p)
12790 j = nlohmann::json{
12791 TOJSON_IMPL(watchdog),
12792 TOJSON_IMPL(housekeeperIntervalMs),
12793 TOJSON_IMPL(tuning)
12796 static void from_json(
const nlohmann::json& j, EngateServerInternals& p)
12799 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12800 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12801 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12805 JSON_SERIALIZED_CLASS(EngateServerConfiguration)
12816 IMPLEMENT_JSON_SERIALIZATION()
12871 serviceConfigurationFileCheckSecs = 60;
12872 groupsConfigurationFileName.clear();
12873 groupsConfigurationFileCommand.clear();
12874 groupsConfigurationFileCheckSecs = 60;
12875 statusReport.clear();
12876 externalHealthCheckResponder.clear();
12878 certStoreFileName.clear();
12879 certStorePasswordHex.clear();
12880 enginePolicy.clear();
12881 configurationCheckSignalName =
"rts.9a164fa.${id}";
12882 fipsCrypto.clear();
12887 static void to_json(nlohmann::json& j,
const EngateServerConfiguration& p)
12889 j = nlohmann::json{
12891 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12892 TOJSON_IMPL(groupsConfigurationFileName),
12893 TOJSON_IMPL(groupsConfigurationFileCommand),
12894 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
12895 TOJSON_IMPL(statusReport),
12896 TOJSON_IMPL(externalHealthCheckResponder),
12897 TOJSON_IMPL(internals),
12898 TOJSON_IMPL(certStoreFileName),
12899 TOJSON_IMPL(certStorePasswordHex),
12900 TOJSON_IMPL(enginePolicy),
12901 TOJSON_IMPL(configurationCheckSignalName),
12902 TOJSON_IMPL(fipsCrypto),
12906 static void from_json(
const nlohmann::json& j, EngateServerConfiguration& p)
12909 getOptional<std::string>(
"id", p.id, j);
12910 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12911 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
12912 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
12913 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
12914 getOptional<EngateServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12915 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12916 getOptional<EngateServerInternals>(
"internals", p.internals, j);
12917 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12918 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12919 j.at(
"enginePolicy").get_to(p.enginePolicy);
12920 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
12921 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12922 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
12926 static inline void dumpExampleConfigurations(
const char *path)
12928 WatchdogSettings::document();
12929 FileRecordingRequest::document();
12930 Feature::document();
12931 Featureset::document();
12933 RtpPayloadTypeTranslation::document();
12934 NetworkInterfaceDevice::document();
12935 ListOfNetworkInterfaceDevice::document();
12936 RtpHeader::document();
12937 BlobInfo::document();
12938 TxAudioUri::document();
12939 AdvancedTxParams::document();
12940 Identity::document();
12941 Location::document();
12943 Connectivity::document();
12944 PresenceDescriptorGroupItem::document();
12945 PresenceDescriptor::document();
12946 NetworkTxOptions::document();
12947 TcpNetworkTxOptions::document();
12948 NetworkAddress::document();
12949 NetworkAddressRxTx::document();
12950 NetworkAddressRestrictionList::document();
12951 StringRestrictionList::document();
12952 Rallypoint::document();
12953 RallypointCluster::document();
12954 NetworkDeviceDescriptor::document();
12955 TxAudio::document();
12956 AudioDeviceDescriptor::document();
12957 ListOfAudioDeviceDescriptor::document();
12959 TalkerInformation::document();
12960 GroupTalkers::document();
12961 Presence::document();
12962 Advertising::document();
12963 GroupPriorityTranslation::document();
12964 GroupTimeline::document();
12965 GroupAppTransport::document();
12966 RtpProfile::document();
12968 Mission::document();
12969 LicenseDescriptor::document();
12970 EngineNetworkingRpUdpStreaming::document();
12971 EnginePolicyNetworking::document();
12974 Bridge::document();
12975 AndroidAudio::document();
12976 EnginePolicyAudio::document();
12977 SecurityCertificate::document();
12978 EnginePolicySecurity::document();
12979 EnginePolicyLogging::document();
12980 EnginePolicyDatabase::document();
12981 NamedAudioDevice::document();
12982 EnginePolicyNamedAudioDevices::document();
12983 Licensing::document();
12984 DiscoveryMagellan::document();
12985 DiscoverySsdp::document();
12986 DiscoverySap::document();
12987 DiscoveryCistech::document();
12988 DiscoveryTrellisware::document();
12989 DiscoveryConfiguration::document();
12990 EnginePolicyInternals::document();
12991 EnginePolicyTimelines::document();
12992 RtpMapEntry::document();
12993 ExternalModule::document();
12994 ExternalCodecDescriptor::document();
12995 EnginePolicy::document();
12996 TalkgroupAsset::document();
12997 EngageDiscoveredGroup::document();
12998 RallypointPeer::document();
12999 RallypointServerLimits::document();
13000 RallypointServerStatusReportConfiguration::document();
13001 RallypointServerLinkGraph::document();
13002 ExternalHealthCheckResponder::document();
13004 PeeringConfiguration::document();
13005 IgmpSnooping::document();
13006 RallypointReflector::document();
13007 RallypointUdpStreaming::document();
13008 RallypointServer::document();
13009 PlatformDiscoveredService::document();
13010 TimelineQueryParameters::document();
13011 CertStoreCertificate::document();
13012 CertStore::document();
13013 CertStoreCertificateElement::document();
13014 CertStoreDescriptor::document();
13015 CertificateDescriptor::document();
13016 BridgeCreationDetail::document();
13017 GroupConnectionDetail::document();
13018 GroupTxDetail::document();
13019 GroupCreationDetail::document();
13020 GroupReconfigurationDetail::document();
13021 GroupHealthReport::document();
13022 InboundProcessorStats::document();
13023 TrafficCounter::document();
13024 GroupStats::document();
13025 RallypointConnectionDetail::document();
13026 BridgingConfiguration::document();
13027 BridgingServerStatusReportConfiguration::document();
13028 BridgingServerInternals::document();
13029 BridgingServerConfiguration::document();
13030 EarGroupsConfiguration::document();
13031 EarServerStatusReportConfiguration::document();
13032 EarServerInternals::document();
13033 EarServerConfiguration::document();
13034 RangerPackets::document();
13035 TransportImpairment::document();
13037 EngageSemGroupsConfiguration::document();
13038 EngageSemServerStatusReportConfiguration::document();
13039 EngageSemServerInternals::document();
13040 EngageSemServerConfiguration::document();
13045 #pragma GCC diagnostic pop
TxPriority_t
Network Transmission Priority.
@ priBestEffort
best effort
AddressResolutionPolicy_t
Address family resolution policy.
@ arpIpv6ThenIpv4
IPv6 then IPv4.
@ arpIpv4ThenIpv6
IPv4 then IPv6.
#define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING
RestrictionElementType_t
Enum describing restriction element types.
@ retGenericAccessTagPattern
Elements are generic access tags regex patterns.
@ retGroupIdPattern
Elements are group ID regex patterns.
@ retGroupId
A literal group ID.
@ retCertificateIssuerPattern
Elements are X.509 certificate issuer regex patterns.
@ retCertificateSubjectPattern
Elements are X.509 certificate subject regex patterns.
@ retCertificateFingerprintPattern
Elements are X.509 certificate fingerprint regex patterns.
@ retCertificateSerialNumberPattern
Elements are X.509 certificate serial number regex patterns.
GroupRestrictionAccessPolicyType_t
Enum describing restriction types.
@ graptStrict
Registration for groups is NOT allowed by default - requires definitive access through something like...
@ graptPermissive
Registration for groups is allowed by default.
RestrictionType_t
Enum describing restriction types.
@ rtWhitelist
Elements are whitelisted.
@ rtBlacklist
Elements are blacklisted.
Configuration when using the engageBeginGroupTxAdvanced API.
TxAudioUri audioUri
[Optional] A URI to stream from instead of the audio input device
uint8_t priority
[Optional, Default: 0] Transmit priority between 0 (lowest) and 255 (highest).
bool receiverRxMuteForAliasSpecializer
[Optional, Default: false] Indicates that the aliasSpecializer must cause receivers to mute this tran...
uint16_t subchannelTag
[Optional, Default: 0] Defines a sub channel within a group. Audio will be opaque to all other client...
bool reBegin
[Optional, Default: false] Indicates that the transmission should be restarted.
uint16_t aliasSpecializer
[Optional, Default: 0] Defines a numeric affinity value to be included in the transmission....
uint16_t flags
[Optional, Default: 0] Combination of the ENGAGE_TXFLAG_xxx flags
std::string alias
[Optional, Default: empty string] The Engage Engine should transmit the user's alias as part of the h...
bool includeNodeId
[Optional, Default: false] The Engage Engine should transmit the NodeId as part of the header extensi...
uint32_t txId
[Optional, Default: 0] Transmission ID
bool muted
[Optional, Default: false] While the microphone should be opened, captured audio should be ignored un...
Defines parameters for advertising of an entity such as a known, public, group.
int intervalMs
[Optional, Default: 20000] Interval at which the advertisement should be sent in milliseconds.
bool enabled
[Optional, Default: false] Enabled advertising
bool alwaysAdvertise
[Optional, Default: false] If true, the node will advertise the item even if it detects other nodes m...
Acoustic Echo Cancellation settings.
int speakerTailMs
[Optional, Default: 60] Milliseconds of speaker tail
bool cng
[Optional, Default: true] Enable comfort noise generation
bool enabled
[Optional, Default: false] Enable acoustic echo cancellation
Mode_t
Acoustic echo cancellation mode enum.
Mode_t mode
[Optional, Default: aecmDefault] Specifies AEC mode. See Mode_t for all modes
bool enabled
[Optional, Default: false] Enables automatic gain control.
int compressionGainDb
[Optional, Default: 25, Minimum = 0, Maximum = 125] Gain in db.
bool enableLimiter
[Optional, Default: false] Enables limiter to prevent overdrive.
int maxLevel
[Optional, Default: 255] Maximum level.
int minLevel
[Optional, Default: 0] Minimum level.
int targetLevelDb
[Optional, Default: 9] Target gain level if there is no compression gain.
Default audio settings for AndroidAudio.
int api
[Optional, Default 0] Android audio API version: 0=Unspecified, 1=AAudio, 2=OpenGLES
int sessionId
[Optional, Default INVALID_SESSION_ID] A session ID from the Android AudioManager
int contentType
[Optional, Default 1] Usage type: 1=Speech 2=Music 3=Movie 4=Sonification
int sharingMode
[Optional, Default 0] Sharing mode: 0=Exclusive, 1=Shared
int performanceMode
[Optional, Default 12] Performance mode: 10=None/Default, 11=PowerSaving, 12=LowLatency
int inputPreset
[Optional, Default 7] Input preset: 1=Generic 5=Camcorder 6=VoiceRecognition 7=VoiceCommunication 9=U...
int usage
[Optional, Default 2] Usage type: 1=Media 2=VoiceCommunication 3=VoiceCommunicationSignalling 4=Alarm...
int engineMode
[Optional, Default 0] 0=use legacy low-level APIs, 1=use high-level Android APIs
Custom Audio Device Configuration.
std::string type
Device type (if any)
int samplingRate
This is the rate that the device will process the PCM audio data at.
std::string name
Name of the device assigned by the platform.
bool isDefault
True if this is the default device for the direction above.
std::string serialNumber
Device serial number (if any)
int channels
Indicates the number of audio channels to process.
std::string hardwareId
Device hardware ID (if any)
std::string manufacturer
Device manufacturer (if any)
Direction_t
Audio Device Direction Enum.
@ dirOutput
This is an output only device.
@ dirInput
This is an input only device.
std::string model
Device mode (if any)
Direction_t direction
Audio direction the device supports.
std::string extra
Extra data provided by the platform (if any)
bool isPresent
True if the device is currently present on the system.
int boostPercentage
A percentage at which to gain/attenuate the audio.
bool isAdad
True if the device is an Application-Defined Audio Device.
int deviceId
[Read Only] Unique device identifier assigned by Engage Engine at time of device creation.
Description of an audio gate.
double coefficient
[Optional. Default: 1.75] Coefficient by which to multiply the current history average to determine t...
uint32_t hangMs
[Optional. Default: 1500] Hang timer in milliseconds
bool enabled
[Optional. Default: false] Enables the audio gate if true
uint32_t windowMin
[Optional. Default: 25] Number of 10ms history samples to gather before calculating the noise floor -...
bool useVad
[Optional. Default: false] Use voice activity detection rather than audio energy
uint32_t windowMax
[Optional. Default: 125] Maximum number of 10ms history samples - ignored if useVad is true
Used to configure the Audio properties for a group.
int outputLevelRight
[Optional, Default: 100] The percentage at which to set the right audio at.
std::string outputHardwareId
[Optional] Hardware ID of the output audio device to use for this group. If empty,...
bool outputMuted
[Optional, Default: false] Mutes output audio.
std::string inputHardwareId
[Optional] Hardware ID of the input audio device to use for this group. If empty, inputId is used.
bool enabled
[Optional, Default: true] Audio is enabled
int inputId
[Optional, Default: first audio device] Id for the input audio device to use for this group.
int outputGain
[Optional, Default: 0] The percentage at which to gain the output audio.
int outputId
[Optional, Default: first audio device] Id for the output audio device to use for this group.
int inputGain
[Optional, Default: 0] The percentage at which to gain the input audio.
int outputLevelLeft
[Optional, Default: 100] The percentage at which to set the left audio at.
Describes an audio device that is available on the system.
std::string model
[Optional] Model
std::string extra
[Optional] Extra
std::string name
Name of the device.
std::string manufacturer
[Optional] Manufacturer
std::string type
[Optional] Type
std::string hardwareId
The string identifier used to identify the hardware.
bool isDefault
True if this is the default device.
std::string serialNumber
[Optional] Serial number
Describes an audio registry.
std::vector< AudioRegistryDevice > inputs
[Optional] List of input devices to use for the registry.
std::vector< AudioRegistryDevice > outputs
[Optional] List of output devices to use for the registry.
Describes the Blob data being sent used in the engageSendGroupBlob API.
size_t size
[Optional, Default : 0] Size of the payload
RtpHeader rtpHeader
Custom RTP header.
PayloadType_t payloadType
[Optional, Default: bptUndefined] The payload type to send in the blob
std::string target
[Optional, Default: empty string] The nodeId to which this message is targeted. If this is empty,...
std::string source
[Optional, Default: empty string] The nodeId of Engage Engine that sent the message....
int txnTimeoutSecs
[Optional, Default: 0] Number of seconds after which to time out delivery to the target node
PayloadType_t
Payload type. BlobInfo RTP supported Payload types.
std::string txnId
[Optional but required if txnTimeoutSecs is > 0]
Detailed information for a bridge creation.
CreationStatus_t
Creation status.
CreationStatus_t status
The creation status.
std::string id
ID of the bridge.
Bridging session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the bridge NOTE: this is only used bt EBS and is ignored when callin...
std::vector< Group > groups
Array of bridges in the configuration.
std::vector< Bridge > bridges
Array of bridges in the configuration.
Configuration for the bridging server.
std::string certStoreFileName
Path to the certificate store.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
OpMode_t mode
Specifies the default operation mode (see OpMode_t).
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
BridgingServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string bridgingConfigurationFileCommand
Command-line to execute that returns a bridging configuration.
std::string bridgingConfigurationFileName
Name of a file containing the bridging configuration.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
OpMode_t
Enum describing the default mode the bridging service runs in. Values of omRaw, omMultistream,...
BridgingServerInternals internals
Internal settings.
int bridgingConfigurationFileCheckSecs
Number of seconds between checks to see if the bridging configuration has been updated....
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
std::string id
A unqiue identifier for the bridge server.
NsmConfiguration nsm
[Optional] Settings for NSM.
Internal bridging server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
TuningSettings tuning
[Optional] Low-level tuning
WatchdogSettings watchdog
[Optional] Settings for the watchdog.
TODO: Configuration for the bridging server status report file.
bool includeBridgeGroupDetail
Description of a certstore certificate element.
std::string tags
Additional attributes.
bool hasPrivateKey
True if the certificate has a private key associated with it.
std::string certificatePem
PEM of the certificate.
Holds a certificate and (optionally) a private key in a certstore.
std::string tags
Additional tags.
std::string id
Id of the certificate.
std::string certificatePem
Certificate in PEM format.
void * internalData
Unserialized internal data.
std::string privateKeyPem
Private key in PEM format.
Description of a certstore.
std::string id
Certstore ID.
std::vector< CertStoreCertificateElement > certificates
Array of certificate elements.
std::string fileName
Name of the file the certstore resides in.
int flags
Flags set for the certstore.
int version
Version of the certstore.
std::vector< KvPair > kvp
Array of kv pairs.
std::vector< KvPair > kvp
[Optional] Array of KV pairs
std::vector< CertStoreCertificate > certificates
Array of certificates in this store.
std::string id
The ID of the certstore.
Description of a certificate.
std::vector< CertificateSubjectElement > subjectElements
Array of subject elements.
std::string serial
Serial #.
std::string publicKeyPem
PEM version of the public key.
std::vector< CertificateSubjectElement > issuerElements
Array of issuer elements.
bool selfSigned
Indicates whether the certificqte is self-signed.
std::string fingerprint
Fingerprint.
std::string notAfter
Validity date notAfter.
std::string subject
Subject.
std::string notBefore
Validity date notBefore.
std::string issuer
Issuer.
std::string certificatePem
PEM version of the certificate.
Description of a certificate subject element.
Connectivity Information used as part of the PresenceDescriptor.
int type
Is the type of connectivity the device has to the network.
int strength
Is the strength of the connection connection as reported by the OS - usually in dbm.
int rating
Is the quality of the network connection as reported by the OS - OS dependent.
Cistech Discovery settings.
Configuration for the Discovery features.
DiscoveryMagellan magellan
DiscoveryTrellisware trellisware
DiscoveryMagellan Discovery settings.
SecurityCertificate security
Tls tls
[Optional] Details concerning Transport Layer Security.
std::string interfaceName
[Optional, Default: default system interface] The network interface to bind to for discovery packets.
Session Announcement Discovery settings settings.
int ageTimeoutMs
[Optional, Default 30000] Number of milliseconds of no SAP announcment before the advertised entity i...
Advertising advertising
Parameters for advertising.
NetworkAddress address
[Optional, Default 224.2.127.254:9875] IP address and port.
bool enabled
[Optional, Default: false] Enables the Engage Engine to use SAP for asset discovery.
std::string interfaceName
[Optional, Default: default system interface] The network interface to bind to for discovery packets.
Simple Service Discovery Protocol settings.
bool enabled
[Optional, Default: false] Enables the Engage Engine to use SSDP for asset discovery.
std::vector< std::string > searchTerms
[Optional] An array of regex strings to be used to filter SSDP requests and responses.
int ageTimeoutMs
[Optional, Default 30000] Number of milliseconds of no SSDP announcment before the advertised entity ...
Advertising advertising
Parameters for advertising.
std::string interfaceName
[Optional, Default: default system interface] The network interface to bind to for discovery packets.
NetworkAddress address
[Optional, Default 255.255.255.255:1900] IP address and port.
Trellisware Discovery settings.
SecurityCertificate security
std::vector< Group > groups
Array of groups in the configuration.
Configuration for the ear server.
std::string id
A unqiue identifier for the EAR server.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NsmConfiguration nsm
[Optional] Settings for NSM.
EarServerInternals internals
Internal settings.
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
EarServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string certStoreFileName
Path to the certificate store.
std::string groupsConfigurationFileName
Name of a file containing the ear configuration.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
Internal ear server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the EAR's watchdog.
TuningSettings tuning
[Optional] Low-level tuning
TODO: Configuration for the ear server status report file.
NetworkAddress rx
Internal RX detail.
NetworkAddress tx
Internal TX detail.
std::string id
Internal ID.
Engage Semaphore configuration.
std::vector< Group > groups
Array of groups in the configuration.
Configuration for the EFC server.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
EngageSemServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string id
A unqiue identifier for the EFC server.
std::string certStoreFileName
Path to the certificate store.
std::string groupsConfigurationFileName
Name of a file containing the EFC configuration.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
EngageSemServerInternals internals
Internal settings.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
Internal EFC server settings.
WatchdogSettings watchdog
[Optional] Settings for the EFC's watchdog.
TuningSettings tuning
[Optional] Low-level tuning
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
TODO: Configuration for the EFC server status report file.
std::vector< EngateGroup > groups
Array of groups in the configuration.
Configuration for the engate server.
EngateServerStatusReportConfiguration statusReport
Details for producing a status report.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
std::string groupsConfigurationFileName
Name of a file containing the ear configuration.
EngateServerInternals internals
Internal settings.
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
std::string certStoreFileName
Path to the certificate store.
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
std::string id
A unqiue identifier for the EAR server.
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
Internal engate server settings.
TuningSettings tuning
[Optional] Low-level tuning
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the EAR's watchdog.
TODO: Configuration for the engate server status report file.
Configuration for RP UDP streaming.
TxPriority_t priority
[Optional, Default: priVoice] Transmission priority. This has meaning on some operating systems based...
int keepaliveIntervalSecs
Optional, Default: 15] Seconds interval at which to send UDP keepalives to Rallypoints....
int ttl
[Optional, Default: 64] Time to live or hop limit is a mechanism that limits the lifespan or lifetime...
int port
[Optional, 0] The port to be used for Rallypoint UDP streaming. A value of 0 will result in an epheme...
bool enabled
[Optional, false] Enables UDP streaming if the RP supports it
Default audio settings for Engage Engine policy.
AudioRegistry registry
[Optional] If specified, this registry will be used to discover the input and output devices
Vad vad
[Optional] Voice activity detection settings
Agc outputAgc
[Optional] Automatic Gain Control for audio outputs
bool saveOutputPcm
[Optional, Default: false] If true, input audio is written to a PCM file in the data directory
bool enabled
[Optional, Default: true] Enables audio processing
AndroidAudio android
[Optional] Android-specific audio settings
int internalRate
[Optional, Default: 16000] Internal sampling rate - 8000 or 16000
bool muteTxOnTx
[Optional, Default: false] Automatically mute TX when TX begins
Agc inputAgc
[Optional] Automatic Gain Control for audio inputs
bool hardwareEnabled
[Optional, Default: true] Enables local machine hardware audio
Aec aec
[Optional] Acoustic echo cancellation settings
bool denoiseInput
[Optional, Default: false] Denoise input
bool saveInputPcm
[Optional, Default: false] If true, input audio is written to a PCM file in the data directory
bool denoiseOutput
[Optional, Default: false] Denoise output
int internalChannels
[Optional, Default: 2] Internal audio channel count rate - 1 or 2
Provides Engage Engine policy configuration.
std::vector< ExternalModule > externalCodecs
Optional external codecs.
EnginePolicyNamedAudioDevices namedAudioDevices
Optional named audio devices (Linux only)
Featureset featureset
Optional feature set.
EnginePolicyDatabase database
Database settings.
EnginePolicyAudio audio
Audio settings.
std::string dataDirectory
Specifies the root of the physical path to store data.
Licensing licensing
Licensing settings.
EnginePolicyLogging logging
Logging settings.
DiscoveryConfiguration discovery
Discovery settings.
std::vector< RtpMapEntry > rtpMap
Optional RTP - overrides the default.
EngineStatusReportConfiguration statusReport
Optional statusReport - details for the status report.
EnginePolicyInternals internals
Internal settings.
EnginePolicySecurity security
Security settings.
EnginePolicyTimelines timelines
Timelines settings.
EnginePolicyNetworking networking
Security settings.
Internal Engage Engine settings.
TuningSettings tuning
[Optional] Low-level tuning
int stickyTidHangSecs
[Optional, Default: 10] The number of seconds after which "sticky" transmission IDs expire.
int maxTxSecs
[Optional, Default: 30] The default duration the engageBeginGroupTx and engageBeginGroupTxAdvanced fu...
int rpConnectionTimeoutSecs
[Optional, Default: 5] Connection timeout in seconds to RP
WatchdogSettings watchdog
[Optional] Settings for the Engine's watchdog.
RallypointCluster::ConnectionStrategy_t rpClusterStrategy
[Optional, Default: csRoundRobin] Specifies the default RP cluster connection strategy to be followed...
int delayedMicrophoneClosureSecs
[Optional, Default: 15] The number of seconds to cache an open microphone before actually closing it.
int rpTransactionTimeoutMs
[Optional, Default: 5] Transaction timeout with RP
int rtpExpirationCheckIntervalMs
[Optional, Default: 250] Interval at which to check for RTP expiration.
int rpClusterRolloverSecs
[Optional, Default: 10] Seconds between switching to a new target in a RP cluster
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
int uriStreamingIntervalMs
[Optional, Default: 60] The packet framing interval for audio streaming from a URI.
int maxLevel
[Optional, Default: 4, Range: 0-4] This is the maximum logging level to display in other words,...
EngineNetworkingRpUdpStreaming rpUdpStreaming
[Optional] Configuration for UDP streaming
std::string defaultNic
The default network interface card the Engage Engine should bind to.
RtpProfile rtpProfile
[Optional] Configuration for RTP profile
AddressResolutionPolicy_t addressResolutionPolicy
[Optional, Default 64] Address resolution policy
int multicastRejoinSecs
[Optional, Default: 8] Number of seconds elapsed between RX of multicast packets before an IGMP rejoi...
bool logRtpJitterBufferStats
[Optional, Default: false] If true, logs RTP jitter buffer statistics periodically
int rallypointRtTestIntervalMs
[Optional, Default: 60000] Milliseconds between sending Rallypoint round-trip test requests
bool preventMulticastFailover
[Optional, Default: false] Overrides/cancels group-level multicast failover if set to true
Default certificate to use for security operation in the Engage Engine.
SecurityCertificate certificate
The default certificate and private key for the Engine instance.
std::vector< std::string > caCertificates
[Optional] An array of CA certificates to be used for validation of far-end X.509 certificates
Engine Policy Timeline configuration.
long autosaveIntervalSecs
[Default 5] Interval at which events are to be saved from memory to disk (a slow operation)
int maxStorageMb
Specifies the maximum storage space to use.
bool enabled
[Optional, Default: true] Specifies if Time Lines are enabled by default.
int maxDiskMb
Specifies the maximum disk space to use - defaults to maxStorageMb.
SecurityCertificate security
The certificate to use for signing the recording.
int maxAudioEventMemMb
Specifies the maximum number of megabytes to allow for a single audio event's memory block - defaults...
long maxEventAgeSecs
Maximum age of an event after which it is to be erased.
int maxMemMb
Specifies the maximum memory to use - defaults to maxStorageMb.
std::string storageRoot
Specifies where the timeline recordings will be stored physically.
bool ephemeral
[Default false] If true, recordings are automatically purged when the Engine is shut down and/or rein...
bool disableSigningAndVerification
[Default false] If true, prevents signing of events - i.e. no anti-tanpering features will be availab...
int maxEvents
Maximum number of events to be retained.
long groomingIntervalSecs
Interval at which events are to be checked for age-based grooming.
TODO: Configuration for the translation server status report file.
bool includeTaskQueueDetail
Describes an external codec.
int samplingRate
Sampling rate.
int rtpPayloadType
RTP payload type.
int rtpTsMultiplier
RTP timestamp multiplier.
TODO: Configuration to enable external systems to use to check if the service is still running.
Base for a description of an external module.
std::string file
File spec.
nlohmann::json configuration
Optional free-form JSON configuration to be passed to the module.
bool debug
[Optional, Default false] If true, requests the crypto engine module to run in debugging mode.
bool enabled
[Optional, Default false] If true, requires FIPS140-2 crypto operation.
std::string curves
[Optional] Specifies the NIST-approved curves to be used for FIPS
std::string path
Path where the crypto engine module is located
std::string ciphers
[Optional] Specifies the NIST-approved ciphers to be used for FIPS
Configuration for the optional custom transport functionality for Group.
bool enabled
[Optional, Default: false] Enables custom feature.
std::string id
The id/name of the transport. This must match the id/name supplied when registering the app transport...
BridgingOpMode_t
Enum describing bridging operation mode types where applicable.
AdvancedTxParams mixedStreamTxParams
[Optional] Parameters to be applied when output is mixed (bomMixedStream)
BridgingOpMode_t mode
[Optional] The output mode
Detailed information for a group connection.
std::string id
ID of the group.
std::string peer
Peer information.
ConnectionType_t
Connection type.
bool asFailover
Indicates whether the connection is for purposes of failover.
ConnectionType_t connectionType
The connection type.
std::string reason
[Optional] Additional reason information
Detailed information for a group creation.
std::string id
ID of the group.
CreationStatus_t status
The creation status.
CreationStatus_t
Creation status.
uint8_t tx
[Optional] The default audio priority
uint8_t rx
[Optional] The default audio RX priority
Detailed information regarding a group's health.
GroupAppTransport appTransport
[Optional] Settings necessary if the group is transported via an application-supplied custom transpor...
std::string source
[Optional, Default: null] Indicates the source of this configuration - e.g. from the application or d...
Presence presence
Presence configuration (see Presence).
std::vector< uint16_t > specializerAffinities
List of specializer IDs that the local node has an affinity for/member of.
std::vector< Source > ignoreSources
[Optional] List of sources to ignore for this group
NetworkAddress rtcpPresenceRx
The network address for receiving RTCP presencing packets.
bool allowLoopback
[Optional, Default: false] Allows for processing of looped back packets - primarily meant for debuggi...
Type_t
Enum describing the group types.
NetworkAddress tx
The network address for transmitting network traffic to.
std::string alias
User alias to transmit as part of the realtime audio stream when using the engageBeginGroupTx API.
int stickyTidHangSecs
[Optional, Default: 10] The number of seconds after which "sticky" transmission IDs expire.
TxAudio txAudio
Audio transmit options such as codec, framing size etc (see TxAudio).
int maxRxSecs
[Optional, Default: 0] Maximum number of seconds the Engine will receive for on this group.
PacketCapturer txCapture
Details for capture of transmitted packets
NetworkTxOptions txOptions
Transmit options for the group (see NetworkTxOptions).
std::string synVoice
Name of the synthesis voice to use for the group
TransportImpairment rxImpairment
[Optional] The RX impairment to apply
std::string languageCode
ISO 639-2 language code for the group
std::string cryptoPassword
Password to be used for encryption. Note that this is not the encryption key but, rather,...
std::vector< std::string > presenceGroupAffinities
List of presence group IDs with which this group has an affinity.
GroupTimeline timeline
Audio timeline is configuration.
GroupPriorityTranslation priorityTranslation
[Optional] Describe how traffic for this group on a different addressing scheme translates to priorit...
bool disablePacketEvents
[Optional, Default: false] Disable packet events.
bool blockAdvertising
[Optional, Default: false] Set this to true if you do not want the Engine to advertise this Group on ...
bool ignoreAudioTraffic
[Optional, Default: false] Indicates that the group should ignore traffic that is audio-related
std::string interfaceName
The name of the network interface to use for multicasting for this group. If not provided,...
bool _wasDeserialized_rtpProfile
[Internal - not serialized
bool enableMulticastFailover
[Optional, Default: false] Set this to true to enable failover to multicast operation if a Rallypoint...
std::string name
The human readable name for the group.
NetworkAddress rx
The network address for receiving network traffic on.
Type_t type
Specifies the group type (see Type_t).
GroupDefaultAudioPriority defaultAudioPriority
Default audio priority for the group (see GroupDefaultAudioPriority).
uint16_t blobRtpPayloadType
[Optional, Default: ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE] The RTP payload type to be used for blobs s...
std::vector< Rallypoint > rallypoints
[DEPRECATED] List of Rallypoint (s) the Group should use to connect to a Rallypoint router....
RtpProfile rtpProfile
[Optional] RTP profile the group
std::vector< RtpPayloadTypeTranslation > inboundRtpPayloadTypeTranslations
[Optional] A vector of translations from external entity RTP payload types to those used by Engage
int multicastFailoverSecs
[Optional, Default: 10] Specifies the number fo seconds to wait after Rallypoint connection failure t...
InboundAliasGenerationPolicy_t
Enum describing the alias generation policy.
RangerPackets rangerPackets
[Optional] Ranger packet options
int rfc4733RtpPayloadId
[Optional, Default: 0] The RTP payload ID by which to identify (RX and TX) payloads encoded according...
uint32_t securityLevel
[Optional, Default: 0] The security classification level of the group.
PacketCapturer rxCapture
Details for capture of received packets
GroupBridgeTargetOutputDetail bridgeTargetOutputDetail
Output details for when the group is a target in a bridge (see GroupBridgeTargetOutputDetail).
std::string id
Unique identity for the group.
AudioGate gateIn
[Optional] Inbound gating of audio - only audio allowed through by the gate will be processed
RallypointCluster rallypointCluster
Cluster of one or more Rallypoints the group may use.
TransportImpairment txImpairment
[Optional] The TX impairment to apply
Audio audio
Sets audio properties like which audio device to use, audio gain etc (see Audio).
bool lbCrypto
[Optional, Default: false] Use low-bandwidth crypto
std::string spokenName
The group name as spoken - typically by a text-to-speech system
InboundAliasGenerationPolicy_t inboundAliasGenerationPolicy
[Optional, Default: iagpAnonymousAlias]
std::string anonymousAlias
[Optional] Alias to use for inbound streams that do not have an alias component
Details for priority transmission based on unique network addressing.
NetworkAddress tx
TX addressing.
int priority
Engage priority for RX & TX.
NetworkAddress rx
RX addressing.
Detailed information for a group reconfiguration.
ReconfigurationStatus_t status
The creation status.
std::string id
ID of the group.
ReconfigurationStatus_t
Reconfiguration status.
Detailed statistics for group.
List of TalkerInformation objects.
std::vector< TalkerInformation > list
List of TalkerInformation objects.
Configuration for Timeline functionality for Group.
bool enabled
[Optional, Default: true] Enables timeline feature.
int maxAudioTimeMs
[Optional, Default: 30000] Maximum audio block size to record in milliseconds.
Detailed information for a group transmit.
std::string id
ID of the group.
int remotePriority
Remote TX priority (optional)
long nonFdxMsHangRemaining
Milliseconds of hang time remaining on a non-FDX group (optional)
int localPriority
Local TX priority (optional)
uint32_t txId
Transmission ID (optional)
TxStatus_t status
The TX status.
std::string displayName
[Optional, Default: empty string] The display name to be used for the user.
std::string userId
[Optional, Default: empty string] The user ID to be used to represent the user.
std::string nodeId
[Optional, Default: Auto Generated] This is the Node ID to use to represent instance on the network.
std::string avatar
[Optional, Default: empty string] This is a application defined field used to indicate a users avatar...
Configuration for IGMP snooping.
int queryIntervalMs
[Optional, Default 125000] Interval between sending IGMP membership queries. If 0,...
int subscriptionTimeoutMs
[Optional, Default 0] Typically calculated according to RFC specifications. Set a value here to manua...
bool enabled
Enables IGMP. Default is false.
Detailed statistics for an inbound processor.
Helper class for serializing and deserializing the LicenseDescriptor JSON.
std::string entitlement
Entitlement key to use for the product.
std::string cargo
Reserved for internal use.
std::string manufacturerId
[Read only] Manufacturer ID.
std::string key
License Key to be used for the application.
uint8_t cargoFlags
Reserved for internal use.
int type
[Read only] 0 = unknown, 1 = perpetual, 2 = expires
std::string deviceId
[Read only] Unique device identifier generated by the Engine.
int status
The current licensing status.
time_t expires
[Read only] The time that the license key or activation code expires in Unix timestamp - Zulu/UTC.
std::string activationCode
If the key required activation, this is the activation code generated using the entitlement,...
std::string expiresFormatted
[Read only] The time that the license key or activation code expires formatted in ISO 8601 format,...
std::string deviceId
Device Identifier. See LicenseDescriptor::deviceId for details.
std::string manufacturerId
Manufacturer ID to use for the product. See LicenseDescriptor::manufacturerId for details.
std::string activationCode
Activation Code issued for the license key. See LicenseDescriptor::activationCode for details.
std::string key
License key. See LicenseDescriptor::key for details.
std::string entitlement
Entitlement key to use for the product. See LicenseDescriptor::entitlement for details.
std::vector< Group > groups
Array of groups in the configuration.
std::vector< VoiceToVoiceSession > voiceToVoiceSessions
Array of voiceToVoice sessions in the configuration.
Configuration for the linguistics server.
LingoServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string lingoConfigurationFileName
Name of a file containing the linguistics configuration.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
std::string id
A unqiue identifier for the linguistics server.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
std::string lingoConfigurationFileCommand
Command-line to execute that returns a linguistics configuration.
LingoServerInternals internals
Internal settings.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
int lingoConfigurationFileCheckSecs
Number of seconds between checks to see if the linguistics configuration has been updated....
std::string certStoreFileName
Path to the certificate store.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NetworkAddress proxy
Address and port of the proxy.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
Internal translator server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the watchdog.
TuningSettings tuning
[Optional] Low-level tuning
TODO: Configuration for the translation server status report file.
bool includeSessionGroupDetail
bool includeSessionDetail
Location information used as part of the PresenceDescriptor.
double longitude
Its the longitudinal position using the Signed degrees format (DDD.dddd) format. Valid range is -180 ...
double altitude
[Optional, Default: INVALID_LOCATION_VALUE] The altitude above sea level in meters.
uint32_t ts
[Read Only: Unix timestamp - Zulu/UTC] Indicates the timestamp that the location was recorded.
double latitude
Its the latitude position using the using the Signed degrees format (DDD.dddd). Valid range is -90 to...
double direction
[Optional, Default: INVALID_LOCATION_VALUE] Direction the endpoint is traveling in degrees....
double speed
[Optional, Default: INVALID_LOCATION_VALUE] The speed the endpoint is traveling at in meters per seco...
Defines settings for a named identity.
SecurityCertificate certificate
The identity certificate.
std::string name
The identity name.
std::string address
IP address.
NetworkAddressRestrictionList.
RestrictionType_t type
Type indicating how the elements are to be treated.
std::vector< NetworkAddressRxTx > elements
List of elements.
Custom Network Device Configuration.
std::string manufacturer
Device manufacturer (if any)
std::string model
Device mode (if any)
int deviceId
[Read Only] Unique device identifier assigned by Engage Engine at time of device creation.
std::string extra
Extra data provided by the platform (if any)
std::string type
Device type (if any)
std::string hardwareId
Device hardware ID (if any)
std::string serialNumber
Device serial number (if any)
std::string name
Name of the device assigned by the platform.
Network Transmit Options.
int ttl
[Optional, Default: 1] Time to live or hop limit is a mechanism that limits the lifespan or lifetime ...
TxPriority_t priority
[Optional, Default: priVoice] Transmission priority. This has meaning on some operating systems based...
Description of a packet capturer.
Configuration for Rallypoint peers.
int version
TODO: A version number for the domain configuration. Change this whenever you update your configurati...
std::string comments
Comments.
std::string id
An identifier useful for organizations that track different domain configurations by ID.
std::vector< RallypointPeer > peers
List of Rallypoint peers to connect to.
Device Power Information used as part of the PresenceDescriptor.
int state
[Optional, Default: 0] Is the current state that the power system is in.
int source
[Optional, Default: 0] Is the source the power is being delivered from
int level
[Optional, Default: 0] Is the current level of the battery or power system as a percentage....
Group Alias used as part of the PresenceDescriptor.
uint16_t status
Status flags for the user's participation on the group.
std::string alias
User's alias for the group.
std::string groupId
Group Id the alias is associated with.
Represents an endpoints presence properties. Used in engageUpdatePresenceDescriptor API and PFN_ENGAG...
Power power
[Optional, Default: see Power] Device power information like charging state, battery level,...
std::string custom
[Optional, Default: empty string] Custom string application can use of presence descriptor....
bool self
[Read Only] Indicates that this presence declaration was generated by the Engage Engine the applicati...
uint32_t nextUpdate
[Read Only, Unix timestamp - Zulu/UTC] Indicates the next time the presence descriptor will be sent.
std::vector< PresenceDescriptorGroupItem > groupAliases
[Read Only] List of group items associated with this presence descriptor.
Identity identity
[Optional, Default see Identity] Endpoint's identity information.
bool announceOnReceive
[Read Only] Indicates that the Engine will announce its PresenceDescriptor in response to this messag...
uint32_t ts
[Read Only, Unix timestamp - Zulu/UTC] Indicates the timestamp that the message was originally sent.
std::string comment
[Optional] No defined limit on size but the total size of the serialized JSON object must fit inside ...
Connectivity connectivity
[Optional, Default: see Connectivity] Device connectivity information like wifi/cellular,...
uint32_t disposition
[Optional] Indicates the users disposition
Location location
[Optional, Default: see Location] Location information
Describes how the Presence is configured for a group of type Group::gtPresence in Group::Type_t.
Format_t format
Format to be used to represent presence information.
Format_t
Presence format types enum.
bool reduceImmediacy
[Optional, Default: false] Instructs the Engage Engine reduce the immediacy of presence announcements...
bool listenOnly
Instructs the Engage Engine to not transmit presence descriptor.
int minIntervalSecs
[Optional, Default: 5] The minimum interval to send at to prevent network flooding
int intervalSecs
[Optional, Default: 30] The interval in seconds at which to send the presence descriptor on the prese...
Defines settings for Rallypoint advertising.
std::string interfaceName
The multicast network interface for mDNS.
std::string serviceName
[Optional, Default "_rallypoint._tcp.local."] The service name
std::string hostName
[Optional] This Rallypoint's DNS-SD host name
int port
[Default: RP port] The multicast network interface for mDNS
bool enabled
[Default: false] Advertising is enabled
int ttl
[Default: 60] TTL for service TTL
int rolloverSecs
Seconds between switching to a new target.
ConnectionStrategy_t
Connection strategy enum.
int transactionTimeoutMs
[Optional, Default: 10000] Default transaction time in milliseconds to any RP in the cluster
int connectionTimeoutSecs
[Optional, Default: 5] Default connection timeout in seconds to any RP in the cluster
std::vector< Rallypoint > rallypoints
List of Rallypoints.
ConnectionStrategy_t connectionStrategy
[Optional, Default: csRoundRobin] Specifies the connection strategy to be followed....
Detailed information for a rallypoint connection.
std::string internalId
Id.
float serverProcessingMs
Server processing time in milliseconds - used for roundtrip reports.
uint64_t msToNextConnectionAttempt
Milliseconds until next connection attempt.
Defines settings for Rallypoint extended group restrictions.
std::vector< StringRestrictionList > restrictions
Restrictions.
int transactionTimeoutMs
[Optional, Default 10000] Number of milliseconds that a transaction may take before the link is consi...
bool allowSelfSignedCertificate
[Optional, Default false] Allows the Rallypoint to accept self-signed certificates from the far-end
std::string sni
[Optional] A user-defined string sent as the Server Name Indication (SNI) field in the TLS setup....
std::vector< std::string > caCertificates
[Optional] A vector of certificates (raw content, file names, or certificate store elements) used to ...
std::string certificate
This is the X509 certificate to use for mutual authentication.
bool verifyPeer
[Optional, Default true] Indicates whether the connection peer is to be verified by checking the vali...
bool disableMessageSigning
[Optional, Default false] Indicates whether to forego ECSDA signing of control-plane messages.
NetworkAddress host
This is the host address for the Engine to connect to the RallyPoint service.
std::string additionalProtocols
[Optional, Default: ""] Additional protocols to use for the Rallypoint connection (only used for WebS...
RpProtocol_t protocol
[Optional, Default: rppTlsTcp] Specifies the protocol to be used for the Rallypoint connection....
std::string certificateKey
This is the private key used to generate the X509 certificate.
int connectionTimeoutSecs
[Optional, Default: 5] Connection timeout in seconds to the RP
TcpNetworkTxOptions tcpTxOptions
[Optional] Tx options for the TCP link
std::string path
[Optional, Default: ""] Path to use for the RP connection (only used for WebSocket)
RpProtocol_t
RP protocol enum.
SecurityCertificate certificate
Internal certificate detail.
std::string id
Internal ID.
std::string additionalProtocols
[Optional, Default: ""] Additional protocols to use for the peer (only used for WebSocket)
bool forceIsMeshLeaf
Internal enablement setting.
int connectionTimeoutSecs
[Optional, Default: 0 - OS platform default] Connection timeout in seconds to the peer
NetworkAddress host
Internal host detail.
std::string path
[Optional, Default: ""] Path to use for the peer (only used for WebSocket)
bool enabled
Internal enablement setting.
Rallypoint::RpProtocol_t protocol
[Optional, Default: Rallypoint::RpProtocol_t::rppTlsTcp] Protocol to use for the peer
Definition of a static group for Rallypoints.
NetworkAddress rx
The network address for receiving network traffic on.
std::string id
Unique identity for the group.
std::vector< NetworkAddress > additionalTx
[Optional] Vector of additional TX addresses .
NetworkAddress tx
The network address for transmitting network traffic to.
DirectionRestriction_t directionRestriction
[Optional] Restriction of direction of traffic flow
DirectionRestriction_t
Enum describing direction(s) for the reflector.
std::string multicastInterfaceName
[Optional] The name of the NIC on which to send and receive multicast traffic.
Defines a behavior for a Rallypoint peer roundtrip time.
BehaviorType_t
Enum describing behavior types.
@ btReportWarn
Report at level warning.
@ btReportError
Report at level error.
@ btReportInfo
Report at level info.
BehaviorType_t behavior
Specifies the streaming mode type (see BehaviorType_t).
uint32_t atOrAboveMs
Network address for listening.
Configuration for the Rallypoint server.
uint32_t maxSecurityLevel
[Optional, Default 0] Sets the maximum item security level that can be registered with the RP
bool forwardDiscoveredGroups
Enables automatic forwarding of discovered multicast traffic to peer Rallypoints.
std::string interfaceName
Name of the NIC to bind to for listening for incoming TCP connections.
NetworkTxOptions multicastTxOptions
Tx options for multicast.
bool disableMessageSigning
Set to true to forgo DSA signing of messages. Doing so is is a security risk but can be useful on CPU...
SecurityCertificate certificate
X.509 certificate and private key that identifies the Rallypoint.
std::string multicastInterfaceName
The name of the NIC on which to send and receive multicast traffic.
StringRestrictionList groupRestrictions
Group IDs to be restricted (inclusive or exclusive)
std::string peeringConfigurationFileName
Name of a file containing a JSON array of Rallypoint peers to connect to.
uint32_t sysFlags
[Optional, Default 0] Internal system flags
int listenPort
TCP port to listen on. Default is 7443.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NetworkAddressRestrictionList multicastRestrictions
Multicasts to be restricted (inclusive or exclusive)
uint32_t normalTaskQueueBias
[Optional, Default 0] Sets the queue's normal task bias
PacketCapturer txCapture
Details for capture of transmitted packets
std::vector< RallypointReflector > staticReflectors
Vector of static groups.
bool enableLeafReflectionReverseSubscription
If enabled, causes a domain leaf to reverse-subscribe to a core node upon the core subscribing and a ...
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
IpFamilyType_t ipFamily
[Optional, Default IpFamilyType_t::ifIp4] Address familiy to be used for listening
int peerRtTestIntervalMs
[Optional, Default: 60000] Milliseconds between sending round-trip test requests to peers
WatchdogSettings watchdog
[Optional] Settings for the Rallypoint's watchdog.
DiscoveryConfiguration discovery
Details discovery capabilities.
bool isMeshLeaf
Indicates whether this Rallypoint is part of a core domain or hangs off the periphery as a leaf node.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
GroupRestrictionAccessPolicyType_t groupRestrictionAccessPolicyType
The policy employed to allow group registration.
RallypointServerStreamStatsExport streamStatsExport
Details for exporting stream statistics.
Licensing licensing
Licensing settings.
PacketCapturer rxCapture
Details for capture of received packets
std::vector< std::string > extraDomains
[Optional] List of additional domains that can be reached via this RP
uint32_t maxOutboundPeerConnectionIntervalDeltaSecs
[Optional, Default 15] Sets the delta value for the maximum number of seconds to delay when attemptin...
TuningSettings tuning
[Optional] Low-level tuning
RallypointAdvertisingSettings advertising
[Optional] Settings for advertising.
Featureset featureset
Optional feature set.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the Rallypoint's interaction with an external health-checker such as a load-balanc...
std::vector< RallypointExtendedGroupRestriction > extendedGroupRestrictions
Extended group restrictions.
int ioPools
Number of threading pools to create for network I/O. Default is -1 which creates 1 I/O pool per CPU c...
RallypointServerStatusReportConfiguration statusReport
Details for producing a status report.
std::vector< NamedIdentity > additionalIdentities
[Optional] List of additional named identities
IgmpSnooping igmpSnooping
IGMP snooping configuration.
RallypointServerLinkGraph linkGraph
Details for producing a Graphviz-compatible link graph.
RallypointServerLimits limits
Details for capacity limits and determining processing load.
PeeringConfiguration peeringConfiguration
Internal - not serialized.
std::string domainName
[Optional] This Rallypoint's domain name
bool allowMulticastForwarding
Allows traffic received on unicast links to be forwarded to the multicast network.
RallypointWebsocketSettings websocket
[Optional] Settings for websocket operation
std::string peeringConfigurationFileCommand
Command-line to execute that returns a JSON array of Rallypoint peers to connect to.
RallypointServerRouteMap routeMap
Details for producing a report containing the route map.
StreamIdPrivacyType_t streamIdPrivacyType
[Optional, default sptDefault] Modes for stream ID transformation.
bool allowPeerForwarding
Set to true to allow forwarding of packets received from other Rallypoints to all other Rallypoints....
TcpNetworkTxOptions tcpTxOptions
Tx options for TCP.
RallypointUdpStreaming udpStreaming
Optional configuration for high-performance UDP streaming.
bool forwardMulticastAddressing
Enables forwarding of multicast addressing to peer Rallypoints.
std::vector< RallypointRpRtTimingBehavior > peerRtBehaviors
[Optional] Array of behaviors for roundtrip times to peers
std::string id
A unqiue identifier for the Rallypoint.
NsmConfiguration nsm
[Optional] Settings for NSM.
bool disableLoopDetection
If true, turns off loop detection.
std::vector< std::string > blockedDomains
[Optional] List of domains that explictly MAY NOT connect to this RP
std::vector< std::string > allowedDomains
[Optional] List of domains that explicitly MAY connect to this RP
std::string certStoreFileName
Path to the certificate store.
int peeringConfigurationFileCheckSecs
Number of seconds between checks to see if the peering configuration has been updated....
Tls tls
Details concerning Transport Layer Security.
TODO: Configuration for Rallypoint limits.
uint32_t maxQOpsPerSec
Maximum number of queue operations per second (0 = unlimited)
uint32_t maxInboundBacklog
Maximum number of inbound backlog requests the Rallypoint will accept.
uint32_t normalPriorityQueueThreshold
Number of normal priority queue operations after which new connections will not be accepted.
uint32_t maxPeers
Maximum number of peers (0 = unlimited)
uint32_t maxTxBytesPerSec
Maximum number of bytes transmitted per second (0 = unlimited)
uint32_t maxTxPacketsPerSec
Maximum number of packets transmitted per second (0 = unlimited)
uint32_t maxRegisteredStreams
Maximum number of registered streams (0 = unlimited)
uint32_t maxClients
Maximum number of clients (0 = unlimited)
uint32_t maxMulticastReflectors
Maximum number of multicastReflectors (0 = unlimited)
uint32_t maxStreamPaths
Maximum number of bidirectional stream paths (0 = unlimited)
uint32_t lowPriorityQueueThreshold
Number of low priority queue operations after which new connections will not be accepted.
uint32_t maxRxBytesPerSec
Maximum number of bytes received per second (0 = unlimited)
uint32_t denyNewConnectionCpuThreshold
The CPU utilization threshold percentage (0-100) beyond which new connections are denied.
uint32_t maxRxPacketsPerSec
Maximum number of packets received per second (0 = unlimited)
uint32_t warnAtCpuThreshold
The CPU utilization threshold percentage (0-100) beyond which warnings are logged.
std::string leafRpStyling
std::string coreRpStyling
bool includeDigraphEnclosure
std::string clientStyling
TODO: Configuration for the Rallypoint status report file.
bool includePeerLinkDetails
bool includeClientLinkDetails
bool resetCountersAfterExport
ExportFormat_t
Enum describing format(s) for the stream stats export.
Streaming configuration for RP clients.
int listenPort
UDP port to listen on. Default is 7444.
TxPriority_t priority
[Optional, Default: priVoice] Transmission priority. This has meaning on some operating systems based...
RallypointUdpStreamingIpvX ipv4
IPv4
bool enabled
[Optional, Default true] If true, enables UDP streaming unless turned off on a per-family basis.
CryptoType_t cryptoType
[Optional, Default ctSharedKeyAes256FullIv] The crypto method to be used
int ttl
[Optional, Default: 64] Time to live or hop limit.
CryptoType_t
Enum describing UDP streaming modes.
int keepaliveIntervalSecs
[Optional, Default: 15] Interval (seconds) at which to send UDP keepalives
RallypointUdpStreamingIpvX ipv6
IPv6.
Streaming configuration for RP clients.
bool enabled
[Optional, Default true] If true, enables UDP streaming for vX.
NetworkAddress external
Network address for external entities to transmit to. Defaults to the address of the local interface ...
Defines settings for Rallypoint websockets functionality.
int listenPort
Listen port (TCP). Default is 8443.
SecurityCertificate certificate
Certificate to be used for WebSockets.
bool requireTls
[Default: false] Indicates whether TLS is required
bool enabled
[Default: false] Websocket is enabled
bool requireClientCertificate
[Default: false] Indicates whether the client is required to present a certificate
Options for Ranger packets.
int count
[Optional, Default: 5] Number of ranger packets to send when a new interval starts
int hangTimerSecs
[Optional, Default: -1] Number of seconds since last packet transmission before 'count' packets are s...
Helper class for serializing and deserializing the RiffDescriptor JSON.
CertificateDescriptor certDescriptor
[Optional] X.509 certificate parsed into a CertificateDescriptor object.
std::string meta
[Optional] Meta data associated with the file - typically a stringified JSON object.
bool verified
True if the ECDSA signature is verified.
int channels
Number of audio channels.
std::string signature
[Optional] ECDSA signature
std::string certPem
[Optional] X.509 certificate in PEM format used to sign the RIFF file.
int sampleCount
Number of audio samples.
std::string file
Name of the RIFF file.
std::string name
Name of the CODEC.
int engageType
An integer representing the codec type.
int rtpPayloadType
The RTP payload type identifier.
RtpPayloadTypeTranslation.
uint16_t engage
The payload type used by Engage.
uint16_t external
The payload type used by the external entity.
Configuration for the optional RtpProfile.
JitterMode_t
Jitter buffer mode.
int signalledInboundProcessorInactivityMs
[Optional, Default: inboundProcessorInactivityMs * 4] The number of milliseconds of RTP inactivity on...
int jitterUnderrunReductionAger
[Optional, Default: 100] Number of jitter buffer operations after which to reduce any underrun
int jitterMinMs
[Optional, Default: 100] Low-water mark for jitter buffers that are in a buffering state.
int jitterMaxFactor
[Optional, Default: 8] The factor by which to multiply the jitter buffer's active low-water to determ...
int inboundProcessorInactivityMs
[Optional, Default: 500] The number of milliseconds of RTP inactivity before heuristically determinin...
JitterMode_t mode
[Optional, Default: jmStandard] Specifies the operation mode (see JitterMode_t).
int jitterForceTrimAtMs
[Optional, Default: 0] Forces trimming of the jitter buffer if the queue length is greater (and not z...
int latePacketSequenceRange
[Optional, Default: 5] The delta in RTP sequence numbers in order to heuristically determine the star...
int jitterMaxExceededClipHangMs
[Optional, Default: 1500] Number of milliseconds for which the jitter buffer may exceed max before cl...
int jitterTrimPercentage
[Optional, Default: 10] The percentage of the overall jitter buffer sample count to trim when potenti...
int jitterMaxTrimMs
[Optional, Default: 250] Maximum number of milliseconds to be trimmed from a jitter buffer at any one...
int jitterMaxMs
[Optional, Default: 10000] Maximum number of milliseconds allowed in the queue
int latePacketTimestampRangeMs
[Optional, Default: 500] The delta in milliseconds in order to heuristically determine the start of a...
int jitterMaxExceededClipPerc
[Optional, Default: 10] Percentage by which maximum number of samples in the queue exceeded computed ...
int zombieLifetimeMs
[Optional, Default: 15000] The number of milliseconds that a "zombified" RTP processor is kept around...
int rtcpPresenceTimeoutMs
[Optional, Default: 45000] Timeout for RTCP presence.
int jitterUnderrunReductionThresholdMs
[Optional, Default: 1500] Number of milliseconds of error-free operations in a jitter buffer before t...
Configuration for a secure signature.
std::string signature
Contains the signature.
std::string certificate
Contains the PEM-formatted text of the certificate.
Configuration for a Security Certificate used in various configurations.
std::string key
As for above but for certificate's private key.
std::string certificate
Contains the PEM-formatted text of the certificate, OR, a reference to a PEM file denoted by "@file:/...
std::string alias
[Optional] An alias
std::string nodeId
[Optional] A node ID
RestrictionType_t type
Type indicating how the elements are to be treated.
std::vector< std::string > elements
List of elements.
RestrictionElementType_t elementsType
Type indicating what kind of data each element contains.
std::string nodeId
A unique identifier for the asset.
Group group
Details for the talkgroup.
Network Transmit Options for TCP.
Parameters for querying the group timeline.
bool onlyCommitted
Include only committed (not in-progress) events.
uint64_t startedOnOrAfter
Include events that started on or after this UNIX millisecond timestamp.
int onlyType
Include events for this type.
long maxCount
Maximum number of records to return.
uint64_t endedOnOrBefore
Include events that ended on or after this UNIX millisecond timestamp.
std::string sql
Ignore all other settings for SQL construction and use this query string instead.
bool mostRecentFirst
Sorted results with most recent timestamp first.
std::string onlyNodeId
Include events for this transmitter node ID.
int onlyDirection
Include events for this direction.
int onlyTxId
Include events for this transmission ID.
std::string onlyAlias
Include events for this transmitter alias.
TODO: Transport Security Layer (TLS) settings.
bool verifyPeers
[Optional, Default: true] When true, checks the far-end certificate validity and Engage-specific TLS ...
StringRestrictionList subjectRestrictions
[NOT USED AT THIS TIME]
std::vector< std::string > caCertificates
[Optional] Array of CA certificates (PEM or "@" file/certstore references) to be used to validate far...
StringRestrictionList issuerRestrictions
[NOT USED AT THIS TIME]
bool allowSelfSignedCertificates
[Optional, Default: false] When true, accepts far-end certificates that are self-signed.
std::vector< std::string > crlSerials
[Optional] Array of serial numbers certificates that have been revoked
Translation configuration.
std::vector< TranslationSession > sessions
Array of sessions in the configuration.
std::vector< Group > groups
Array of groups in the configuration.
Translation session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the session
Description of a transport impairment.
uint32_t maxActiveBlobObjects
[Optional, Default 0 (no max)] Maximum number of blob objects allowed to be active
uint32_t maxActiveRtpProcessors
[Optional, Default 0 (no max)] Maximum number concurrent RTP processors
uint32_t maxPooledBufferMb
[Optional, Default 0 (no max)] Maximum number of buffer bytes allowed to be pooled
uint32_t maxActiveBufferObjects
[Optional, Default 0 (no max)] Maximum number of buffer objects allowed to be active
uint32_t maxPooledBufferObjects
[Optional, Default 0 (no max)] Maximum number of buffer objects allowed to be pooled
uint32_t maxPooledRtpObjects
[Optional, Default 0 (no max)] Maximum number of RTP objects allowed to be pooled
uint32_t maxPooledBlobMb
[Optional, Default 0 (no max)] Maximum number of blob bytes allowed to be pooled
uint32_t maxPooledRtpMb
[Optional, Default 0 (no max)] Maximum number of RTP bytes allowed to be pooled
uint32_t maxActiveRtpObjects
[Optional, Default 0 (no max)] Maximum number of RTP objects allowed to be active
uint32_t maxPooledBlobObjects
[Optional, Default 0 (no max)] Maximum number of blob objects allowed to be pooled
Configuration for the audio transmit properties for a group.
int startTxNotifications
[Optional, Default: 5] Number of start TX notifications to send when TX is about to begin.
int framingMs
[Optional, Default: 60] Audio sample framing size in milliseconds.
int maxTxSecs
[Optional, Default: 0] Maximum number of seconds the Engine will transmit for.
uint32_t internalKey
[INTERNAL] The Engine-assigned key for the codec
bool enabled
[Optional, Default: true] Audio transmission is enabled
bool fdx
[Optional, Default: false] Indicates if full duplex audio is supported.
int initialHeaderBurst
[Optional, Default: 5] Number of headers to send at the beginning of a talk burst.
bool resetRtpOnTx
[Optional, Default: true] Resets RTP counters on each new transmission.
bool dtx
[Optional, Default: false] Support discontinuous transmission on those CODECs that allow it
std::string encoderName
[Optional] The name of the external codec - overrides encoder
TxCodec_t encoder
[Optional, Default: ctOpus8000] Specifies the Codec Type to use for the transmission....
int blockCount
[Optional, Default: 0] If >0, derives framingMs based on the encoder's internal operation
int smoothedHangTimeMs
[Optional, Default: 0] Hang timer for ongoing TX - only applicable if enableSmoothing is true
int customRtpPayloadType
[Optional, Default: -1] The custom RTP payload type to use for transmission. A value of -1 causes the...
bool noHdrExt
[Optional, Default: false] Set to true whether to disable header extensions.
bool enableSmoothing
[Optional, Default: true] Smooth input audio
int trailingHeaderBurst
[Optional, Default: 5] Number of headers to send at the conclusion of a talk burst.
int extensionSendInterval
[Optional, Default: 10] The number of packets when to periodically send the header extension.
TxCodec_t
Codec Types enum.
Optional audio streaming from a URI for engageBeginGroupTxAdvanced.
std::string uri
URI for the file.
int repeatCount
[Optional, Default: 0] Number of times to repeat
Voice Activity Detection settings.
bool enabled
[Optional, Default: false] Enable VAD
Mode_t mode
[Optional, Default: vamDefault] Specifies VAD mode. See Mode_t for all modes
Voice to voice session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the session
int intervalMs
[Optional, Default: 5000] Interval at which checks are made.
int hangDetectionMs
[Optional, Default: 2000] Number of milliseconds that must pass before a hang is assumed.
int slowExecutionThresholdMs
[Optional, Default: 100] Maximum number of milliseconds that a task may take before being considered ...
bool abortOnHang
[Optional, Default: true] If true, aborts the process if a hang is detected.
bool enabled
[Optional, Default: true] Enables/disables a watchdog.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * OID_RTS_PEM
Rally Tactical Systems' PEN as assigned by IANA.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * OID_RTS_CERT_SUBJ_ACCESS_TAGS
The link to the Rallypoint is down.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_SERIAL
The Rallypoint denied the registration request because the far-end's certificate serial number has be...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_SECURITY_CLASSIFICATION_LEVEL_TOO_HIGH
The Rallypoint has denied the registration because the registration is for a security level not allow...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_ON_BLACKLIST
The Rallypoint denied the registration request because the far-end does appears in blackist criteria.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_FINGERPRINT
The Rallypoint denied the registration request because the far-end's certificate fingerprint has been...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_ISSUER
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_GENERAL_DENIAL
The Rallypoint has denied the registration for no specific reason.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_ACCESS_TAG
The Rallypoint denied the registration request because the far-end's certificate does not have an acc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_SUBJECT
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NOT_ALLOWED
The Rallypoint is not accepting registration for the group at this time.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_SUBJECT
The Rallypoint denied the registration request because the far-end's certificate subject has been exc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_LINK
The link to the Rallypoint is down.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_SERIAL
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_FINGERPRINT
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_ISSUER
The Rallypoint denied the registration request because the far-end's certificate issuer has been excl...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_ACCESS_TAG
The Rallypoint denied the registration request because the far-end's certificate does not have an acc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_UNREGISTERED
The group has been gracefully unregistered from the Rallypoint.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_REAON
No particular reason was provided.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NOT_ON_WHITELIST
The Rallypoint denied the registration request because the far-end does not appear in any whitelist c...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_DOMO
The source is Domo Tactical via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_CISTECH
The source is CISTECH via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_CORE
The source is a Magellan-capable entity.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_INTERNAL
Internal to Engage.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_TAIT
The source is Tait via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_TRELLISWARE
The source is Trellisware via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_SILVUS
The source is Silvus via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_VOCALITY
The source is Vocality via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_PERSISTENT
The source is Persistent Systems via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_KENWOOD
The source is Kenwood via Magellan discovery.
static const uint8_t ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE
The default RTP payload type Engage uses for RTP blob messaging.