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(Rfc4733Event)
1226 IMPLEMENT_JSON_SERIALIZATION()
1260 virtual void initForDocumenting()
1271 static void to_json(nlohmann::json& j,
const Rfc4733Event& p)
1276 TOJSON_IMPL(reserved),
1277 TOJSON_IMPL(volume),
1278 TOJSON_IMPL(duration)
1281 static void from_json(
const nlohmann::json& j, Rfc4733Event& p)
1284 getOptional<int>(
"id", p.id, j, -1);
1285 getOptional<bool>(
"end", p.end, j,
false);
1286 getOptional<int>(
"reserved", p.reserved, j, 0);
1287 getOptional<int>(
"volume", p.volume, j, 0);
1288 getOptional<int>(
"duration", p.duration, j, 0);
1292 JSON_SERIALIZED_CLASS(BlobInfo)
1303 IMPLEMENT_JSON_SERIALIZATION()
1304 IMPLEMENT_JSON_DOCUMENTATION(
BlobInfo)
1319 bptJsonTextUtf8 = 2,
1325 bptEngageBinaryHumanBiometrics = 4,
1328 bptAppMimeMessage = 5,
1331 bptRfc4733Events = 6,
1334 bptEngageInternal = 42
1369 payloadType = PayloadType_t::bptUndefined;
1374 virtual void initForDocumenting()
1377 rtpHeader.initForDocumenting();
1381 static void to_json(nlohmann::json& j,
const BlobInfo& p)
1385 TOJSON_IMPL(source),
1386 TOJSON_IMPL(target),
1387 TOJSON_IMPL(rtpHeader),
1388 TOJSON_IMPL(payloadType),
1390 TOJSON_IMPL(txnTimeoutSecs)
1393 static void from_json(
const nlohmann::json& j, BlobInfo& p)
1396 getOptional<size_t>(
"size", p.size, j, 0);
1397 getOptional<std::string>(
"source", p.source, j, EMPTY_STRING);
1398 getOptional<std::string>(
"target", p.target, j, EMPTY_STRING);
1399 getOptional<RtpHeader>(
"rtpHeader", p.rtpHeader, j);
1400 getOptional<BlobInfo::PayloadType_t>(
"payloadType", p.payloadType, j, BlobInfo::PayloadType_t::bptUndefined);
1401 getOptional<std::string>(
"txnId", p.txnId, j, EMPTY_STRING);
1402 getOptional<int>(
"txnTimeoutSecs", p.txnTimeoutSecs, j, 0);
1407 JSON_SERIALIZED_CLASS(TxAudioUri)
1421 IMPLEMENT_JSON_SERIALIZATION()
1442 virtual void initForDocumenting()
1447 static void to_json(nlohmann::json& j,
const TxAudioUri& p)
1451 TOJSON_IMPL(repeatCount)
1454 static void from_json(
const nlohmann::json& j, TxAudioUri& p)
1457 getOptional<std::string>(
"uri", p.uri, j, EMPTY_STRING);
1458 getOptional<int>(
"repeatCount", p.repeatCount, j, 0);
1463 JSON_SERIALIZED_CLASS(AdvancedTxParams)
1477 IMPLEMENT_JSON_SERIALIZATION()
1525 includeNodeId =
false;
1530 aliasSpecializer = 0;
1531 receiverRxMuteForAliasSpecializer =
false;
1535 virtual void initForDocumenting()
1540 static void to_json(nlohmann::json& j,
const AdvancedTxParams& p)
1544 TOJSON_IMPL(priority),
1545 TOJSON_IMPL(subchannelTag),
1546 TOJSON_IMPL(includeNodeId),
1550 TOJSON_IMPL(audioUri),
1551 TOJSON_IMPL(aliasSpecializer),
1552 TOJSON_IMPL(receiverRxMuteForAliasSpecializer),
1553 TOJSON_IMPL(reBegin)
1556 static void from_json(
const nlohmann::json& j, AdvancedTxParams& p)
1559 getOptional<uint16_t>(
"flags", p.flags, j, 0);
1560 getOptional<uint8_t>(
"priority", p.priority, j, 0);
1561 getOptional<uint16_t>(
"subchannelTag", p.subchannelTag, j, 0);
1562 getOptional<bool>(
"includeNodeId", p.includeNodeId, j,
false);
1563 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
1564 getOptional<bool>(
"muted", p.muted, j,
false);
1565 getOptional<uint32_t>(
"txId", p.txId, j, 0);
1566 getOptional<TxAudioUri>(
"audioUri", p.audioUri, j);
1567 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
1568 getOptional<bool>(
"receiverRxMuteForAliasSpecializer", p.receiverRxMuteForAliasSpecializer, j,
false);
1569 getOptional<bool>(
"reBegin", p.reBegin, j,
false);
1573 JSON_SERIALIZED_CLASS(Identity)
1587 IMPLEMENT_JSON_SERIALIZATION()
1588 IMPLEMENT_JSON_DOCUMENTATION(
Identity)
1618 displayName.clear();
1622 virtual void initForDocumenting()
1627 static void to_json(nlohmann::json& j,
const Identity& p)
1630 TOJSON_IMPL(nodeId),
1631 TOJSON_IMPL(userId),
1632 TOJSON_IMPL(displayName),
1636 static void from_json(
const nlohmann::json& j, Identity& p)
1639 getOptional<std::string>(
"nodeId", p.nodeId, j);
1640 getOptional<std::string>(
"userId", p.userId, j);
1641 getOptional<std::string>(
"displayName", p.displayName, j);
1642 getOptional<std::string>(
"avatar", p.avatar, j);
1647 JSON_SERIALIZED_CLASS(Location)
1661 IMPLEMENT_JSON_SERIALIZATION()
1662 IMPLEMENT_JSON_DOCUMENTATION(
Location)
1665 constexpr static double INVALID_LOCATION_VALUE = -999.999;
1693 latitude = INVALID_LOCATION_VALUE;
1694 longitude = INVALID_LOCATION_VALUE;
1695 altitude = INVALID_LOCATION_VALUE;
1696 direction = INVALID_LOCATION_VALUE;
1697 speed = INVALID_LOCATION_VALUE;
1700 virtual void initForDocumenting()
1706 longitude = 456.789;
1713 static void to_json(nlohmann::json& j,
const Location& p)
1715 if(p.latitude != Location::INVALID_LOCATION_VALUE && p.longitude != Location::INVALID_LOCATION_VALUE)
1718 TOJSON_IMPL(latitude),
1719 TOJSON_IMPL(longitude),
1722 if(p.ts != 0) j[
"ts"] = p.ts;
1723 if(p.altitude != Location::INVALID_LOCATION_VALUE) j[
"altitude"] = p.altitude;
1724 if(p.speed != Location::INVALID_LOCATION_VALUE) j[
"speed"] = p.speed;
1725 if(p.direction != Location::INVALID_LOCATION_VALUE) j[
"direction"] = p.direction;
1728 static void from_json(
const nlohmann::json& j, Location& p)
1731 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1732 j.at(
"latitude").get_to(p.latitude);
1733 j.at(
"longitude").get_to(p.longitude);
1734 getOptional<double>(
"altitude", p.altitude, j, Location::INVALID_LOCATION_VALUE);
1735 getOptional<double>(
"direction", p.direction, j, Location::INVALID_LOCATION_VALUE);
1736 getOptional<double>(
"speed", p.speed, j, Location::INVALID_LOCATION_VALUE);
1740 JSON_SERIALIZED_CLASS(Power)
1752 IMPLEMENT_JSON_SERIALIZATION()
1753 IMPLEMENT_JSON_DOCUMENTATION(
Power)
1799 virtual void initForDocumenting()
1804 static void to_json(nlohmann::json& j,
const Power& p)
1806 if(p.source != 0 && p.state != 0 && p.level != 0)
1809 TOJSON_IMPL(source),
1815 static void from_json(
const nlohmann::json& j, Power& p)
1818 getOptional<int>(
"source", p.source, j, 0);
1819 getOptional<int>(
"state", p.state, j, 0);
1820 getOptional<int>(
"level", p.level, j, 0);
1825 JSON_SERIALIZED_CLASS(Connectivity)
1837 IMPLEMENT_JSON_SERIALIZATION()
1874 virtual void initForDocumenting()
1884 static void to_json(nlohmann::json& j,
const Connectivity& p)
1890 TOJSON_IMPL(strength),
1895 static void from_json(
const nlohmann::json& j, Connectivity& p)
1898 getOptional<int>(
"type", p.type, j, 0);
1899 getOptional<int>(
"strength", p.strength, j, 0);
1900 getOptional<int>(
"rating", p.rating, j, 0);
1905 JSON_SERIALIZED_CLASS(PresenceDescriptorGroupItem)
1917 IMPLEMENT_JSON_SERIALIZATION()
1942 virtual void initForDocumenting()
1944 groupId =
"{123-456}";
1950 static void to_json(nlohmann::json& j,
const PresenceDescriptorGroupItem& p)
1953 TOJSON_IMPL(groupId),
1958 static void from_json(
const nlohmann::json& j, PresenceDescriptorGroupItem& p)
1961 getOptional<std::string>(
"groupId", p.groupId, j);
1962 getOptional<std::string>(
"alias", p.alias, j);
1963 getOptional<uint16_t>(
"status", p.status, j);
1968 JSON_SERIALIZED_CLASS(PresenceDescriptor)
1980 IMPLEMENT_JSON_SERIALIZATION()
2058 groupAliases.clear();
2061 announceOnReceive =
false;
2062 connectivity.clear();
2066 virtual void initForDocumenting()
2073 identity.initForDocumenting();
2074 comment =
"This is a comment";
2077 PresenceDescriptorGroupItem gi;
2078 gi.initForDocumenting();
2079 groupAliases.push_back(gi);
2081 location.initForDocumenting();
2083 announceOnReceive =
true;
2084 connectivity.initForDocumenting();
2085 power.initForDocumenting();
2089 static void to_json(nlohmann::json& j,
const PresenceDescriptor& p)
2093 TOJSON_IMPL(nextUpdate),
2094 TOJSON_IMPL(identity),
2095 TOJSON_IMPL(comment),
2096 TOJSON_IMPL(disposition),
2097 TOJSON_IMPL(groupAliases),
2098 TOJSON_IMPL(location),
2099 TOJSON_IMPL(custom),
2100 TOJSON_IMPL(announceOnReceive),
2101 TOJSON_IMPL(connectivity),
2105 if(!p.comment.empty()) j[
"comment"] = p.comment;
2106 if(!p.custom.empty()) j[
"custom"] = p.custom;
2113 static void from_json(
const nlohmann::json& j, PresenceDescriptor& p)
2116 getOptional<bool>(
"self", p.self, j);
2117 getOptional<uint32_t>(
"ts", p.ts, j);
2118 getOptional<uint32_t>(
"nextUpdate", p.nextUpdate, j);
2119 getOptional<Identity>(
"identity", p.identity, j);
2120 getOptional<std::string>(
"comment", p.comment, j);
2121 getOptional<uint32_t>(
"disposition", p.disposition, j);
2122 getOptional<std::vector<PresenceDescriptorGroupItem>>(
"groupAliases", p.groupAliases, j);
2123 getOptional<Location>(
"location", p.location, j);
2124 getOptional<std::string>(
"custom", p.custom, j);
2125 getOptional<bool>(
"announceOnReceive", p.announceOnReceive, j);
2126 getOptional<Connectivity>(
"connectivity", p.connectivity, j);
2127 getOptional<Power>(
"power", p.power, j);
2168 } AddressResolutionPolicy_t;
2171 JSON_SERIALIZED_CLASS(NetworkTxOptions)
2185 IMPLEMENT_JSON_SERIALIZATION()
2210 virtual void initForDocumenting()
2215 static void to_json(nlohmann::json& j,
const NetworkTxOptions& p)
2218 TOJSON_IMPL(priority),
2222 static void from_json(
const nlohmann::json& j, NetworkTxOptions& p)
2225 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2226 getOptional<int>(
"ttl", p.ttl, j, 1);
2231 JSON_SERIALIZED_CLASS(TcpNetworkTxOptions)
2241 IMPLEMENT_JSON_SERIALIZATION()
2256 virtual void initForDocumenting()
2264 TOJSON_IMPL(priority),
2268 static void from_json(
const nlohmann::json& j, TcpNetworkTxOptions& p)
2271 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2272 getOptional<int>(
"ttl", p.ttl, j, -1);
2288 JSON_SERIALIZED_CLASS(NetworkAddress)
2301 IMPLEMENT_JSON_SERIALIZATION()
2322 bool matches(
const NetworkAddress& other)
2324 if(address.compare(other.address) != 0)
2329 if(port != other.port)
2338 static void to_json(nlohmann::json& j,
const NetworkAddress& p)
2341 TOJSON_IMPL(address),
2345 static void from_json(
const nlohmann::json& j, NetworkAddress& p)
2348 getOptional<std::string>(
"address", p.address, j);
2349 getOptional<int>(
"port", p.port, j);
2354 JSON_SERIALIZED_CLASS(NetworkAddressRxTx)
2367 IMPLEMENT_JSON_SERIALIZATION()
2389 static void to_json(nlohmann::json& j,
const NetworkAddressRxTx& p)
2396 static void from_json(
const nlohmann::json& j, NetworkAddressRxTx& p)
2399 getOptional<NetworkAddress>(
"rx", p.rx, j);
2400 getOptional<NetworkAddress>(
"tx", p.tx, j);
2411 } GroupRestrictionAccessPolicyType_t;
2413 static bool isValidGroupRestrictionAccessPolicyType(GroupRestrictionAccessPolicyType_t t)
2415 return (t == GroupRestrictionAccessPolicyType_t::graptPermissive ||
2416 t == GroupRestrictionAccessPolicyType_t::graptStrict );
2430 } RestrictionType_t;
2432 static bool isValidRestrictionType(RestrictionType_t t)
2434 return (t == RestrictionType_t::rtUndefined ||
2435 t == RestrictionType_t::rtWhitelist ||
2436 t == RestrictionType_t::rtBlacklist );
2462 } RestrictionElementType_t;
2464 static bool isValidRestrictionElementType(RestrictionElementType_t t)
2466 return (t == RestrictionElementType_t::retGroupId ||
2467 t == RestrictionElementType_t::retGroupIdPattern ||
2468 t == RestrictionElementType_t::retGenericAccessTagPattern ||
2469 t == RestrictionElementType_t::retCertificateSerialNumberPattern ||
2470 t == RestrictionElementType_t::retCertificateFingerprintPattern ||
2471 t == RestrictionElementType_t::retCertificateSubjectPattern ||
2472 t == RestrictionElementType_t::retCertificateIssuerPattern);
2477 JSON_SERIALIZED_CLASS(NetworkAddressRestrictionList)
2490 IMPLEMENT_JSON_SERIALIZATION()
2507 type = RestrictionType_t::rtUndefined;
2512 static void to_json(nlohmann::json& j,
const NetworkAddressRestrictionList& p)
2516 TOJSON_IMPL(elements)
2519 static void from_json(
const nlohmann::json& j, NetworkAddressRestrictionList& p)
2522 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2523 getOptional<std::vector<NetworkAddressRxTx>>(
"elements", p.elements, j);
2527 JSON_SERIALIZED_CLASS(StringRestrictionList)
2540 IMPLEMENT_JSON_SERIALIZATION()
2555 type = RestrictionType_t::rtUndefined;
2556 elementsType = RestrictionElementType_t::retGroupId;
2566 static void to_json(nlohmann::json& j,
const StringRestrictionList& p)
2570 TOJSON_IMPL(elementsType),
2571 TOJSON_IMPL(elements)
2574 static void from_json(
const nlohmann::json& j, StringRestrictionList& p)
2577 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2578 getOptional<RestrictionElementType_t>(
"elementsType", p.elementsType, j, RestrictionElementType_t::retGroupId);
2579 getOptional<std::vector<std::string>>(
"elements", p.elements, j);
2584 JSON_SERIALIZED_CLASS(PacketCapturer)
2595 IMPLEMENT_JSON_SERIALIZATION()
2601 std::string filePrefix;
2619 TOJSON_IMPL(enabled),
2621 TOJSON_IMPL(filePrefix)
2624 static void from_json(
const nlohmann::json& j, PacketCapturer& p)
2627 getOptional<bool>(
"enabled", p.enabled, j,
false);
2628 getOptional<uint32_t>(
"maxMb", p.maxMb, j, 10);
2629 getOptional<std::string>(
"filePrefix", p.filePrefix, j, EMPTY_STRING);
2634 JSON_SERIALIZED_CLASS(TransportImpairment)
2645 IMPLEMENT_JSON_SERIALIZATION()
2649 int applicationPercentage;
2662 applicationPercentage = 0;
2665 errorPercentage = 0;
2669 static void to_json(nlohmann::json& j,
const TransportImpairment& p)
2672 TOJSON_IMPL(applicationPercentage),
2673 TOJSON_IMPL(jitterMs),
2674 TOJSON_IMPL(lossPercentage),
2675 TOJSON_IMPL(errorPercentage)
2678 static void from_json(
const nlohmann::json& j, TransportImpairment& p)
2681 getOptional<int>(
"applicationPercentage", p.applicationPercentage, j, 0);
2682 getOptional<int>(
"jitterMs", p.jitterMs, j, 0);
2683 getOptional<int>(
"lossPercentage", p.lossPercentage, j, 0);
2684 getOptional<int>(
"errorPercentage", p.errorPercentage, j, 0);
2688 JSON_SERIALIZED_CLASS(NsmNetworking)
2702 IMPLEMENT_JSON_SERIALIZATION()
2706 std::string address;
2713 std::string cryptoPassword;
2714 int maxUdpPayloadBytes;
2726 priority = TxPriority_t::priVoice;
2728 rxImpairment.clear();
2729 txImpairment.clear();
2730 cryptoPassword.clear();
2731 maxUdpPayloadBytes = 800;
2735 static void to_json(nlohmann::json& j,
const NsmNetworking& p)
2737 nlohmann::json pathJson;
2738 to_json(pathJson, p.address);
2742 TOJSON_IMPL(priority),
2743 TOJSON_IMPL(txOversend),
2744 TOJSON_IMPL(rxImpairment),
2745 TOJSON_IMPL(txImpairment),
2746 TOJSON_IMPL(cryptoPassword),
2747 TOJSON_IMPL(maxUdpPayloadBytes)
2750 static void from_json(
const nlohmann::json& j, NsmNetworking& p)
2753 getOptional<std::string>(
"address", p.address, j);
2754 getOptional<int>(
"port", p.port, j, 8513);
2755 getOptional<int>(
"ttl", p.ttl, j, 1);
2756 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2757 getOptional<int>(
"txOversend", p.txOversend, j, 0);
2758 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
2759 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
2760 getOptional(
"cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
2761 getOptional<int>(
"maxUdpPayloadBytes", p.maxUdpPayloadBytes, j, 800);
2765 JSON_SERIALIZED_CLASS(NsmNodeResource)
2773 IMPLEMENT_JSON_SERIALIZATION()
2794 static void to_json(nlohmann::json& j,
const NsmNodeResource& p)
2798 TOJSON_IMPL(priority)
2801 static void from_json(
const nlohmann::json& j, NsmNodeResource& p)
2804 getOptional<std::string>(
"id", p.id, j);
2805 getOptional<int>(
"priority", p.priority, j, -1);
2812 if (!j.contains(
"resources") || !j[
"resources"].is_array())
2816 for (
const auto& el : j[
"resources"])
2818 if (!el.is_object())
2824 getOptional<std::string>(
"id", nr.
id, el);
2825 getOptional<int>(
"priority", nr.
priority, el, -1);
2835 JSON_SERIALIZED_CLASS(NsmConfiguration)
2846 IMPLEMENT_JSON_SERIALIZATION()
2854 std::vector<NsmNodeResource> resources;
2858 int transitionSecsFactor;
2863 bool logCommandOutput;
2873 favorUptime =
false;
2876 tokenStart = 1000000;
2879 transitionSecsFactor = 3;
2880 internalMultiplier = 1;
2881 goingActiveRandomDelayMs = 500;
2882 logCommandOutput =
false;
2886 static void to_json(nlohmann::json& j,
const NsmConfiguration& p)
2890 TOJSON_IMPL(favorUptime),
2891 TOJSON_IMPL(networking),
2892 TOJSON_IMPL(resources),
2893 TOJSON_IMPL(tokenStart),
2894 TOJSON_IMPL(tokenEnd),
2895 TOJSON_IMPL(intervalSecs),
2896 TOJSON_IMPL(transitionSecsFactor),
2897 TOJSON_IMPL(internalMultiplier),
2898 TOJSON_IMPL(goingActiveRandomDelayMs),
2899 TOJSON_IMPL(logCommandOutput),
2902 static void from_json(
const nlohmann::json& j, NsmConfiguration& p)
2905 getOptional(
"id", p.id, j);
2906 getOptional<bool>(
"favorUptime", p.favorUptime, j,
false);
2907 getOptional<NsmNetworking>(
"networking", p.networking, j);
2909 getOptional<int>(
"tokenStart", p.tokenStart, j, 1000000);
2910 getOptional<int>(
"tokenEnd", p.tokenEnd, j, 2000000);
2911 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
2912 getOptional<int>(
"transitionSecsFactor", p.transitionSecsFactor, j, 3);
2913 getOptional<int>(
"internalMultiplier", p.internalMultiplier, j, 1);
2914 getOptional<int>(
"goingActiveRandomDelayMs", p.goingActiveRandomDelayMs, j, 500);
2915 getOptional<bool>(
"logCommandOutput", p.logCommandOutput, j,
false);
2920 JSON_SERIALIZED_CLASS(Rallypoint)
2930 IMPLEMENT_JSON_SERIALIZATION()
3039 certificate.clear();
3040 certificateKey.clear();
3041 caCertificates.clear();
3043 transactionTimeoutMs = 0;
3044 disableMessageSigning =
false;
3045 connectionTimeoutSecs = 0;
3046 tcpTxOptions.clear();
3048 protocol = rppTlsTcp;
3050 additionalProtocols.clear();
3053 bool matches(
const Rallypoint& other)
3055 if(!host.matches(other.host))
3060 if(protocol != other.protocol)
3065 if(path.compare(other.path) != 0)
3070 if(certificate.compare(other.certificate) != 0)
3075 if(certificateKey.compare(other.certificateKey) != 0)
3080 if(verifyPeer != other.verifyPeer)
3085 if(allowSelfSignedCertificate != other.allowSelfSignedCertificate)
3090 if(caCertificates.size() != other.caCertificates.size())
3095 for(
size_t x = 0; x < caCertificates.size(); x++)
3099 for(
size_t y = 0; y < other.caCertificates.size(); y++)
3101 if(caCertificates[x].compare(other.caCertificates[y]) == 0)
3114 if(transactionTimeoutMs != other.transactionTimeoutMs)
3119 if(disableMessageSigning != other.disableMessageSigning)
3123 if(connectionTimeoutSecs != other.connectionTimeoutSecs)
3127 if(tcpTxOptions.
priority != other.tcpTxOptions.priority)
3131 if(sni.compare(other.sni) != 0)
3140 static void to_json(nlohmann::json& j,
const Rallypoint& p)
3144 TOJSON_IMPL(certificate),
3145 TOJSON_IMPL(certificateKey),
3146 TOJSON_IMPL(verifyPeer),
3147 TOJSON_IMPL(allowSelfSignedCertificate),
3148 TOJSON_IMPL(caCertificates),
3149 TOJSON_IMPL(transactionTimeoutMs),
3150 TOJSON_IMPL(disableMessageSigning),
3151 TOJSON_IMPL(connectionTimeoutSecs),
3152 TOJSON_IMPL(tcpTxOptions),
3154 TOJSON_IMPL(protocol),
3156 TOJSON_IMPL(additionalProtocols)
3160 static void from_json(
const nlohmann::json& j, Rallypoint& p)
3163 j.at(
"host").get_to(p.host);
3164 getOptional(
"certificate", p.certificate, j);
3165 getOptional(
"certificateKey", p.certificateKey, j);
3166 getOptional<bool>(
"verifyPeer", p.verifyPeer, j,
true);
3167 getOptional<bool>(
"allowSelfSignedCertificate", p.allowSelfSignedCertificate, j,
false);
3168 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
3169 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 0);
3170 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
3171 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
3172 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
3173 getOptional<std::string>(
"sni", p.sni, j);
3174 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
3175 getOptional<std::string>(
"path", p.path, j);
3176 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
3180 JSON_SERIALIZED_CLASS(RallypointCluster)
3193 IMPLEMENT_JSON_SERIALIZATION()
3209 } ConnectionStrategy_t;
3233 connectionStrategy = csRoundRobin;
3234 rallypoints.clear();
3236 connectionTimeoutSecs = 5;
3237 transactionTimeoutMs = 10000;
3241 static void to_json(nlohmann::json& j,
const RallypointCluster& p)
3244 TOJSON_IMPL(connectionStrategy),
3245 TOJSON_IMPL(rallypoints),
3246 TOJSON_IMPL(rolloverSecs),
3247 TOJSON_IMPL(connectionTimeoutSecs),
3248 TOJSON_IMPL(transactionTimeoutMs)
3251 static void from_json(
const nlohmann::json& j, RallypointCluster& p)
3254 getOptional<RallypointCluster::ConnectionStrategy_t>(
"connectionStrategy", p.connectionStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
3255 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
3256 getOptional<int>(
"rolloverSecs", p.rolloverSecs, j, 10);
3257 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
3258 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 10000);
3263 JSON_SERIALIZED_CLASS(NetworkDeviceDescriptor)
3275 IMPLEMENT_JSON_SERIALIZATION()
3316 manufacturer.clear();
3319 serialNumber.clear();
3324 virtual std::string toString()
3328 snprintf(buff,
sizeof(buff),
"deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
3331 manufacturer.c_str(),
3334 serialNumber.c_str(),
3338 return std::string(buff);
3342 static void to_json(nlohmann::json& j,
const NetworkDeviceDescriptor& p)
3345 TOJSON_IMPL(deviceId),
3347 TOJSON_IMPL(manufacturer),
3349 TOJSON_IMPL(hardwareId),
3350 TOJSON_IMPL(serialNumber),
3355 static void from_json(
const nlohmann::json& j, NetworkDeviceDescriptor& p)
3358 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3359 getOptional(
"name", p.name, j);
3360 getOptional(
"manufacturer", p.manufacturer, j);
3361 getOptional(
"model", p.model, j);
3362 getOptional(
"hardwareId", p.hardwareId, j);
3363 getOptional(
"serialNumber", p.serialNumber, j);
3364 getOptional(
"type", p.type, j);
3365 getOptional(
"extra", p.extra, j);
3369 JSON_SERIALIZED_CLASS(AudioGate)
3380 IMPLEMENT_JSON_SERIALIZATION()
3419 static void to_json(nlohmann::json& j,
const AudioGate& p)
3422 TOJSON_IMPL(enabled),
3423 TOJSON_IMPL(useVad),
3424 TOJSON_IMPL(hangMs),
3425 TOJSON_IMPL(windowMin),
3426 TOJSON_IMPL(windowMax),
3427 TOJSON_IMPL(coefficient)
3430 static void from_json(
const nlohmann::json& j, AudioGate& p)
3433 getOptional<bool>(
"enabled", p.enabled, j,
false);
3434 getOptional<bool>(
"useVad", p.useVad, j,
false);
3435 getOptional<uint32_t>(
"hangMs", p.hangMs, j, 1500);
3436 getOptional<uint32_t>(
"windowMin", p.windowMin, j, 25);
3437 getOptional<uint32_t>(
"windowMax", p.windowMax, j, 125);
3438 getOptional<double>(
"coefficient", p.coefficient, j, 1.75);
3442 JSON_SERIALIZED_CLASS(TxAudio)
3457 IMPLEMENT_JSON_SERIALIZATION()
3458 IMPLEMENT_JSON_DOCUMENTATION(
TxAudio)
3629 hetEngageStandard = 0,
3632 hetNatoStanga5643 = 1
3633 } HeaderExtensionType_t;
3715 encoder = TxAudio::TxCodec_t::ctUnknown;
3716 encoderName.clear();
3722 extensionSendInterval = 10;
3723 initialHeaderBurst = 5;
3724 trailingHeaderBurst = 5;
3725 startTxNotifications = 5;
3726 customRtpPayloadType = -1;
3728 resetRtpOnTx =
true;
3729 enableSmoothing =
true;
3731 smoothedHangTimeMs = 0;
3732 hdrExtType = HeaderExtensionType_t::hetEngageStandard;
3736 static void to_json(nlohmann::json& j,
const TxAudio& p)
3739 TOJSON_IMPL(enabled),
3740 TOJSON_IMPL(encoder),
3741 TOJSON_IMPL(encoderName),
3742 TOJSON_IMPL(framingMs),
3743 TOJSON_IMPL(blockCount),
3745 TOJSON_IMPL(noHdrExt),
3746 TOJSON_IMPL(maxTxSecs),
3747 TOJSON_IMPL(extensionSendInterval),
3748 TOJSON_IMPL(initialHeaderBurst),
3749 TOJSON_IMPL(trailingHeaderBurst),
3750 TOJSON_IMPL(startTxNotifications),
3751 TOJSON_IMPL(customRtpPayloadType),
3752 TOJSON_IMPL(resetRtpOnTx),
3753 TOJSON_IMPL(enableSmoothing),
3755 TOJSON_IMPL(smoothedHangTimeMs),
3756 TOJSON_IMPL(hdrExtType)
3761 static void from_json(
const nlohmann::json& j, TxAudio& p)
3764 getOptional<bool>(
"enabled", p.enabled, j,
true);
3765 getOptional<TxAudio::TxCodec_t>(
"encoder", p.encoder, j, TxAudio::TxCodec_t::ctOpus8000);
3766 getOptional<std::string>(
"encoderName", p.encoderName, j, EMPTY_STRING);
3767 getOptional(
"framingMs", p.framingMs, j, 60);
3768 getOptional(
"blockCount", p.blockCount, j, 0);
3769 getOptional(
"fdx", p.fdx, j,
false);
3770 getOptional(
"noHdrExt", p.noHdrExt, j,
false);
3771 getOptional(
"maxTxSecs", p.maxTxSecs, j, 0);
3772 getOptional(
"extensionSendInterval", p.extensionSendInterval, j, 10);
3773 getOptional(
"initialHeaderBurst", p.initialHeaderBurst, j, 5);
3774 getOptional(
"trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3775 getOptional(
"startTxNotifications", p.startTxNotifications, j, 5);
3776 getOptional(
"customRtpPayloadType", p.customRtpPayloadType, j, -1);
3777 getOptional(
"resetRtpOnTx", p.resetRtpOnTx, j,
true);
3778 getOptional(
"enableSmoothing", p.enableSmoothing, j,
true);
3779 getOptional(
"dtx", p.dtx, j,
false);
3780 getOptional(
"smoothedHangTimeMs", p.smoothedHangTimeMs, j, 0);
3781 getOptional(
"hdrExtType", p.hdrExtType, j, TxAudio::HeaderExtensionType_t::hetEngageStandard);
3787 JSON_SERIALIZED_CLASS(AudioRegistryDevice)
3799 IMPLEMENT_JSON_SERIALIZATION()
3838 manufacturer.clear();
3840 serialNumber.clear();
3845 virtual std::string toString()
3849 snprintf(buff,
sizeof(buff),
"hardwareId=%s, isDefault=%d, name=%s, manufacturer=%s, model=%s, serialNumber=%s, type=%s, extra=%s",
3853 manufacturer.c_str(),
3855 serialNumber.c_str(),
3859 return std::string(buff);
3863 static void to_json(nlohmann::json& j,
const AudioRegistryDevice& p)
3866 TOJSON_IMPL(hardwareId),
3867 TOJSON_IMPL(isDefault),
3869 TOJSON_IMPL(manufacturer),
3871 TOJSON_IMPL(serialNumber),
3876 static void from_json(
const nlohmann::json& j, AudioRegistryDevice& p)
3879 getOptional<std::string>(
"hardwareId", p.hardwareId, j, EMPTY_STRING);
3880 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
3881 getOptional(
"name", p.name, j);
3882 getOptional(
"manufacturer", p.manufacturer, j);
3883 getOptional(
"model", p.model, j);
3884 getOptional(
"serialNumber", p.serialNumber, j);
3885 getOptional(
"type", p.type, j);
3886 getOptional(
"extra", p.extra, j);
3891 JSON_SERIALIZED_CLASS(AudioRegistry)
3903 IMPLEMENT_JSON_SERIALIZATION()
3924 virtual std::string toString()
3926 return std::string(
"");
3930 static void to_json(nlohmann::json& j,
const AudioRegistry& p)
3933 TOJSON_IMPL(inputs),
3934 TOJSON_IMPL(outputs)
3937 static void from_json(
const nlohmann::json& j, AudioRegistry& p)
3940 getOptional<std::vector<AudioRegistryDevice>>(
"inputs", p.inputs, j);
3941 getOptional<std::vector<AudioRegistryDevice>>(
"outputs", p.outputs, j);
3945 JSON_SERIALIZED_CLASS(AudioDeviceDescriptor)
3957 IMPLEMENT_JSON_SERIALIZATION()
4051 direction = dirUnknown;
4052 boostPercentage = 0;
4057 manufacturer.clear();
4060 serialNumber.clear();
4066 virtual std::string toString()
4070 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",
4078 manufacturer.c_str(),
4081 serialNumber.c_str(),
4087 return std::string(buff);
4091 static void to_json(nlohmann::json& j,
const AudioDeviceDescriptor& p)
4094 TOJSON_IMPL(deviceId),
4095 TOJSON_IMPL(samplingRate),
4096 TOJSON_IMPL(channels),
4097 TOJSON_IMPL(direction),
4098 TOJSON_IMPL(boostPercentage),
4099 TOJSON_IMPL(isAdad),
4101 TOJSON_IMPL(manufacturer),
4103 TOJSON_IMPL(hardwareId),
4104 TOJSON_IMPL(serialNumber),
4105 TOJSON_IMPL(isDefault),
4108 TOJSON_IMPL(isPresent)
4111 static void from_json(
const nlohmann::json& j, AudioDeviceDescriptor& p)
4114 getOptional<int>(
"deviceId", p.deviceId, j, 0);
4115 getOptional<int>(
"samplingRate", p.samplingRate, j, 0);
4116 getOptional<int>(
"channels", p.channels, j, 0);
4117 getOptional<AudioDeviceDescriptor::Direction_t>(
"direction", p.direction, j,
4118 AudioDeviceDescriptor::Direction_t::dirUnknown);
4119 getOptional<int>(
"boostPercentage", p.boostPercentage, j, 0);
4121 getOptional<bool>(
"isAdad", p.isAdad, j,
false);
4122 getOptional(
"name", p.name, j);
4123 getOptional(
"manufacturer", p.manufacturer, j);
4124 getOptional(
"model", p.model, j);
4125 getOptional(
"hardwareId", p.hardwareId, j);
4126 getOptional(
"serialNumber", p.serialNumber, j);
4127 getOptional(
"isDefault", p.isDefault, j);
4128 getOptional(
"type", p.type, j);
4129 getOptional(
"extra", p.extra, j);
4130 getOptional<bool>(
"isPresent", p.isPresent, j,
false);
4134 JSON_SERIALIZED_CLASS(ListOfAudioDeviceDescriptor)
4137 IMPLEMENT_JSON_SERIALIZATION()
4141 std::vector<AudioDeviceDescriptor> list;
4160 static void from_json(
const nlohmann::json& j, ListOfAudioDeviceDescriptor& p)
4163 getOptional<std::vector<AudioDeviceDescriptor>>(
"list", p.list, j);
4167 JSON_SERIALIZED_CLASS(Audio)
4177 IMPLEMENT_JSON_SERIALIZATION()
4178 IMPLEMENT_JSON_DOCUMENTATION(
Audio)
4220 inputHardwareId.clear();
4223 outputHardwareId.clear();
4225 outputLevelLeft = 100;
4226 outputLevelRight = 100;
4227 outputMuted =
false;
4231 static void to_json(nlohmann::json& j,
const Audio& p)
4234 TOJSON_IMPL(enabled),
4235 TOJSON_IMPL(inputId),
4236 TOJSON_IMPL(inputHardwareId),
4237 TOJSON_IMPL(inputGain),
4238 TOJSON_IMPL(outputId),
4239 TOJSON_IMPL(outputHardwareId),
4240 TOJSON_IMPL(outputLevelLeft),
4241 TOJSON_IMPL(outputLevelRight),
4242 TOJSON_IMPL(outputMuted)
4245 static void from_json(
const nlohmann::json& j, Audio& p)
4248 getOptional<bool>(
"enabled", p.enabled, j,
true);
4249 getOptional<int>(
"inputId", p.inputId, j, 0);
4250 getOptional<std::string>(
"inputHardwareId", p.inputHardwareId, j, EMPTY_STRING);
4251 getOptional<int>(
"inputGain", p.inputGain, j, 0);
4252 getOptional<int>(
"outputId", p.outputId, j, 0);
4253 getOptional<std::string>(
"outputHardwareId", p.outputHardwareId, j, EMPTY_STRING);
4254 getOptional<int>(
"outputGain", p.outputGain, j, 0);
4255 getOptional<int>(
"outputLevelLeft", p.outputLevelLeft, j, 100);
4256 getOptional<int>(
"outputLevelRight", p.outputLevelRight, j, 100);
4257 getOptional<bool>(
"outputMuted", p.outputMuted, j,
false);
4261 JSON_SERIALIZED_CLASS(TalkerInformation)
4273 IMPLEMENT_JSON_SERIALIZATION()
4289 matSsrcGenerated = 2
4290 } ManufacturedAliasType_t;
4335 aliasSpecializer = 0;
4337 manufacturedAliasType = ManufacturedAliasType_t::matNone;
4342 static void to_json(nlohmann::json& j,
const TalkerInformation& p)
4346 TOJSON_IMPL(nodeId),
4347 TOJSON_IMPL(rxFlags),
4348 TOJSON_IMPL(txPriority),
4350 TOJSON_IMPL(duplicateCount),
4351 TOJSON_IMPL(aliasSpecializer),
4352 TOJSON_IMPL(rxMuted),
4353 TOJSON_IMPL(manufacturedAliasType),
4357 static void from_json(
const nlohmann::json& j, TalkerInformation& p)
4360 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
4361 getOptional<std::string>(
"nodeId", p.nodeId, j, EMPTY_STRING);
4362 getOptional<uint16_t>(
"rxFlags", p.rxFlags, j, 0);
4363 getOptional<int>(
"txPriority", p.txPriority, j, 0);
4364 getOptional<uint32_t>(
"txId", p.txId, j, 0);
4365 getOptional<int>(
"duplicateCount", p.duplicateCount, j, 0);
4366 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
4367 getOptional<bool>(
"rxMuted", p.rxMuted, j,
false);
4368 getOptional<TalkerInformation::ManufacturedAliasType_t>(
"manufacturedAliasType", p.manufacturedAliasType, j, TalkerInformation::ManufacturedAliasType_t::matNone);
4369 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
4373 JSON_SERIALIZED_CLASS(GroupTalkers)
4387 IMPLEMENT_JSON_SERIALIZATION()
4392 std::vector<TalkerInformation>
list;
4405 static void to_json(nlohmann::json& j,
const GroupTalkers& p)
4411 static void from_json(
const nlohmann::json& j, GroupTalkers& p)
4414 getOptional<std::vector<TalkerInformation>>(
"list", p.list, j);
4418 JSON_SERIALIZED_CLASS(Presence)
4430 IMPLEMENT_JSON_SERIALIZATION()
4431 IMPLEMENT_JSON_DOCUMENTATION(
Presence)
4479 minIntervalSecs = 5;
4480 reduceImmediacy =
false;
4484 static void to_json(nlohmann::json& j,
const Presence& p)
4487 TOJSON_IMPL(format),
4488 TOJSON_IMPL(intervalSecs),
4489 TOJSON_IMPL(listenOnly),
4490 TOJSON_IMPL(minIntervalSecs),
4491 TOJSON_IMPL(reduceImmediacy)
4494 static void from_json(
const nlohmann::json& j, Presence& p)
4497 getOptional<Presence::Format_t>(
"format", p.format, j, Presence::Format_t::pfEngage);
4498 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 30);
4499 getOptional<bool>(
"listenOnly", p.listenOnly, j,
false);
4500 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 5);
4501 getOptional<bool>(
"reduceImmediacy", p.reduceImmediacy, j,
false);
4506 JSON_SERIALIZED_CLASS(Advertising)
4518 IMPLEMENT_JSON_SERIALIZATION()
4540 alwaysAdvertise =
false;
4544 static void to_json(nlohmann::json& j,
const Advertising& p)
4547 TOJSON_IMPL(enabled),
4548 TOJSON_IMPL(intervalMs),
4549 TOJSON_IMPL(alwaysAdvertise)
4552 static void from_json(
const nlohmann::json& j, Advertising& p)
4555 getOptional(
"enabled", p.enabled, j,
false);
4556 getOptional<int>(
"intervalMs", p.intervalMs, j, 20000);
4557 getOptional<bool>(
"alwaysAdvertise", p.alwaysAdvertise, j,
false);
4561 JSON_SERIALIZED_CLASS(GroupPriorityTranslation)
4573 IMPLEMENT_JSON_SERIALIZATION()
4599 static void to_json(nlohmann::json& j,
const GroupPriorityTranslation& p)
4604 TOJSON_IMPL(priority)
4607 static void from_json(
const nlohmann::json& j, GroupPriorityTranslation& p)
4610 j.at(
"rx").get_to(p.rx);
4611 j.at(
"tx").get_to(p.tx);
4612 FROMJSON_IMPL(priority,
int, 0);
4616 JSON_SERIALIZED_CLASS(GroupTimeline)
4630 IMPLEMENT_JSON_SERIALIZATION()
4649 maxAudioTimeMs = 30000;
4654 static void to_json(nlohmann::json& j,
const GroupTimeline& p)
4657 TOJSON_IMPL(enabled),
4658 TOJSON_IMPL(maxAudioTimeMs),
4659 TOJSON_IMPL(recordAudio)
4662 static void from_json(
const nlohmann::json& j, GroupTimeline& p)
4665 getOptional(
"enabled", p.enabled, j,
true);
4666 getOptional<int>(
"maxAudioTimeMs", p.maxAudioTimeMs, j, 30000);
4667 getOptional(
"recordAudio", p.recordAudio, j,
true);
4770 IMPLEMENT_JSON_SERIALIZATION()
4792 static void to_json(nlohmann::json& j,
const GroupAppTransport& p)
4795 TOJSON_IMPL(enabled),
4799 static void from_json(
const nlohmann::json& j, GroupAppTransport& p)
4802 getOptional<bool>(
"enabled", p.enabled, j,
false);
4803 getOptional<std::string>(
"id", p.id, j);
4807 JSON_SERIALIZED_CLASS(RtpProfile)
4819 IMPLEMENT_JSON_SERIALIZATION()
4837 jmReleaseOnTxEnd = 2
4900 jitterMaxMs = 10000;
4902 jitterMaxFactor = 8;
4903 jitterTrimPercentage = 10;
4904 jitterUnderrunReductionThresholdMs = 1500;
4905 jitterUnderrunReductionAger = 100;
4906 latePacketSequenceRange = 5;
4907 latePacketTimestampRangeMs = 2000;
4908 inboundProcessorInactivityMs = 500;
4909 jitterForceTrimAtMs = 0;
4910 rtcpPresenceTimeoutMs = 45000;
4911 jitterMaxExceededClipPerc = 10;
4912 jitterMaxExceededClipHangMs = 1500;
4913 zombieLifetimeMs = 15000;
4914 jitterMaxTrimMs = 250;
4915 signalledInboundProcessorInactivityMs = (inboundProcessorInactivityMs * 4);
4919 static void to_json(nlohmann::json& j,
const RtpProfile& p)
4923 TOJSON_IMPL(jitterMaxMs),
4924 TOJSON_IMPL(inboundProcessorInactivityMs),
4925 TOJSON_IMPL(jitterMinMs),
4926 TOJSON_IMPL(jitterMaxFactor),
4927 TOJSON_IMPL(jitterTrimPercentage),
4928 TOJSON_IMPL(jitterUnderrunReductionThresholdMs),
4929 TOJSON_IMPL(jitterUnderrunReductionAger),
4930 TOJSON_IMPL(latePacketSequenceRange),
4931 TOJSON_IMPL(latePacketTimestampRangeMs),
4932 TOJSON_IMPL(inboundProcessorInactivityMs),
4933 TOJSON_IMPL(jitterForceTrimAtMs),
4934 TOJSON_IMPL(jitterMaxExceededClipPerc),
4935 TOJSON_IMPL(jitterMaxExceededClipHangMs),
4936 TOJSON_IMPL(zombieLifetimeMs),
4937 TOJSON_IMPL(jitterMaxTrimMs),
4938 TOJSON_IMPL(signalledInboundProcessorInactivityMs)
4941 static void from_json(
const nlohmann::json& j, RtpProfile& p)
4944 FROMJSON_IMPL(mode, RtpProfile::JitterMode_t, RtpProfile::JitterMode_t::jmStandard);
4945 FROMJSON_IMPL(jitterMaxMs,
int, 10000);
4946 FROMJSON_IMPL(jitterMinMs,
int, 20);
4947 FROMJSON_IMPL(jitterMaxFactor,
int, 8);
4948 FROMJSON_IMPL(jitterTrimPercentage,
int, 10);
4949 FROMJSON_IMPL(jitterUnderrunReductionThresholdMs,
int, 1500);
4950 FROMJSON_IMPL(jitterUnderrunReductionAger,
int, 100);
4951 FROMJSON_IMPL(latePacketSequenceRange,
int, 5);
4952 FROMJSON_IMPL(latePacketTimestampRangeMs,
int, 2000);
4953 FROMJSON_IMPL(inboundProcessorInactivityMs,
int, 500);
4954 FROMJSON_IMPL(jitterForceTrimAtMs,
int, 0);
4955 FROMJSON_IMPL(rtcpPresenceTimeoutMs,
int, 45000);
4956 FROMJSON_IMPL(jitterMaxExceededClipPerc,
int, 10);
4957 FROMJSON_IMPL(jitterMaxExceededClipHangMs,
int, 1500);
4958 FROMJSON_IMPL(zombieLifetimeMs,
int, 15000);
4959 FROMJSON_IMPL(jitterMaxTrimMs,
int, 250);
4960 FROMJSON_IMPL(signalledInboundProcessorInactivityMs,
int, (p.inboundProcessorInactivityMs * 4));
4964 JSON_SERIALIZED_CLASS(Tls)
4976 IMPLEMENT_JSON_SERIALIZATION()
4977 IMPLEMENT_JSON_DOCUMENTATION(
Tls)
5007 allowSelfSignedCertificates =
false;
5008 caCertificates.clear();
5009 subjectRestrictions.clear();
5010 issuerRestrictions.clear();
5015 static void to_json(nlohmann::json& j,
const Tls& p)
5018 TOJSON_IMPL(verifyPeers),
5019 TOJSON_IMPL(allowSelfSignedCertificates),
5020 TOJSON_IMPL(caCertificates),
5021 TOJSON_IMPL(subjectRestrictions),
5022 TOJSON_IMPL(issuerRestrictions),
5023 TOJSON_IMPL(crlSerials)
5026 static void from_json(
const nlohmann::json& j, Tls& p)
5029 getOptional<bool>(
"verifyPeers", p.verifyPeers, j,
true);
5030 getOptional<bool>(
"allowSelfSignedCertificates", p.allowSelfSignedCertificates, j,
false);
5031 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
5032 getOptional<StringRestrictionList>(
"subjectRestrictions", p.subjectRestrictions, j);
5033 getOptional<StringRestrictionList>(
"issuerRestrictions", p.issuerRestrictions, j);
5034 getOptional<std::vector<std::string>>(
"crlSerials", p.crlSerials, j);
5038 JSON_SERIALIZED_CLASS(RangerPackets)
5052 IMPLEMENT_JSON_SERIALIZATION()
5073 virtual void initForDocumenting()
5078 static void to_json(nlohmann::json& j,
const RangerPackets& p)
5081 TOJSON_IMPL(hangTimerSecs),
5085 static void from_json(
const nlohmann::json& j, RangerPackets& p)
5088 getOptional<int>(
"hangTimerSecs", p.hangTimerSecs, j, 11);
5089 getOptional<int>(
"count", p.count, j, 5);
5093 JSON_SERIALIZED_CLASS(Source)
5107 IMPLEMENT_JSON_SERIALIZATION()
5108 IMPLEMENT_JSON_DOCUMENTATION(
Source)
5115 uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
5121 uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
5131 memset(_internal_binary_nodeId, 0,
sizeof(_internal_binary_nodeId));
5134 memset(_internal_binary_alias, 0,
sizeof(_internal_binary_alias));
5137 virtual void initForDocumenting()
5142 static void to_json(nlohmann::json& j,
const Source& p)
5145 TOJSON_IMPL(nodeId),
5149 static void from_json(
const nlohmann::json& j, Source& p)
5152 FROMJSON_IMPL_SIMPLE(nodeId);
5153 FROMJSON_IMPL_SIMPLE(alias);
5157 JSON_SERIALIZED_CLASS(GroupBridgeTargetOutputDetail)
5171 IMPLEMENT_JSON_SERIALIZATION()
5208 mode = BridgingOpMode_t::bomRaw;
5209 mixedStreamTxParams.clear();
5212 virtual void initForDocumenting()
5218 static void to_json(nlohmann::json& j,
const GroupBridgeTargetOutputDetail& p)
5222 TOJSON_IMPL(mixedStreamTxParams)
5225 static void from_json(
const nlohmann::json& j, GroupBridgeTargetOutputDetail& p)
5228 FROMJSON_IMPL_SIMPLE(mode);
5229 FROMJSON_IMPL_SIMPLE(mixedStreamTxParams);
5233 JSON_SERIALIZED_CLASS(GroupDefaultAudioPriority)
5247 IMPLEMENT_JSON_SERIALIZATION()
5268 virtual void initForDocumenting()
5274 static void to_json(nlohmann::json& j,
const GroupDefaultAudioPriority& p)
5281 static void from_json(
const nlohmann::json& j, GroupDefaultAudioPriority& p)
5284 FROMJSON_IMPL_SIMPLE(tx);
5285 FROMJSON_IMPL_SIMPLE(rx);
5289 JSON_SERIALIZED_CLASS(Group)
5302 IMPLEMENT_JSON_SERIALIZATION()
5303 IMPLEMENT_JSON_DOCUMENTATION(
Group)
5326 iagpAnonymousAlias = 0,
5330 } InboundAliasGenerationPolicy_t;
5505 bridgeTargetOutputDetail.clear();
5506 defaultAudioPriority.clear();
5510 interfaceName.clear();
5516 cryptoPassword.clear();
5520 rallypoints.clear();
5521 rallypointCluster.clear();
5526 blockAdvertising =
false;
5532 enableMulticastFailover =
false;
5533 multicastFailoverSecs = 10;
5535 rtcpPresenceRx.clear();
5537 presenceGroupAffinities.clear();
5538 disablePacketEvents =
false;
5540 rfc4733RtpPayloadId = 0;
5541 inboundRtpPayloadTypeTranslations.clear();
5542 priorityTranslation.clear();
5544 stickyTidHangSecs = 10;
5545 anonymousAlias.clear();
5548 appTransport.clear();
5549 allowLoopback =
false;
5552 rangerPackets.clear();
5554 _wasDeserialized_rtpProfile =
false;
5556 txImpairment.clear();
5557 rxImpairment.clear();
5559 specializerAffinities.clear();
5563 ignoreSources.clear();
5565 languageCode.clear();
5572 inboundAliasGenerationPolicy = iagpAnonymousAlias;
5575 ignoreAudioTraffic =
false;
5579 static void to_json(nlohmann::json& j,
const Group& p)
5583 TOJSON_IMPL(bridgeTargetOutputDetail),
5584 TOJSON_IMPL(defaultAudioPriority),
5587 TOJSON_IMPL(spokenName),
5588 TOJSON_IMPL(interfaceName),
5591 TOJSON_IMPL(txOptions),
5592 TOJSON_IMPL(txAudio),
5593 TOJSON_IMPL(presence),
5594 TOJSON_IMPL(cryptoPassword),
5603 TOJSON_IMPL(timeline),
5604 TOJSON_IMPL(blockAdvertising),
5605 TOJSON_IMPL(source),
5606 TOJSON_IMPL(maxRxSecs),
5607 TOJSON_IMPL(enableMulticastFailover),
5608 TOJSON_IMPL(multicastFailoverSecs),
5609 TOJSON_IMPL(rtcpPresenceRx),
5610 TOJSON_IMPL(presenceGroupAffinities),
5611 TOJSON_IMPL(disablePacketEvents),
5612 TOJSON_IMPL(rfc4733RtpPayloadId),
5613 TOJSON_IMPL(inboundRtpPayloadTypeTranslations),
5614 TOJSON_IMPL(priorityTranslation),
5615 TOJSON_IMPL(stickyTidHangSecs),
5616 TOJSON_IMPL(anonymousAlias),
5617 TOJSON_IMPL(lbCrypto),
5618 TOJSON_IMPL(appTransport),
5619 TOJSON_IMPL(allowLoopback),
5620 TOJSON_IMPL(rangerPackets),
5622 TOJSON_IMPL(txImpairment),
5623 TOJSON_IMPL(rxImpairment),
5625 TOJSON_IMPL(specializerAffinities),
5627 TOJSON_IMPL(securityLevel),
5629 TOJSON_IMPL(ignoreSources),
5631 TOJSON_IMPL(languageCode),
5632 TOJSON_IMPL(synVoice),
5634 TOJSON_IMPL(rxCapture),
5635 TOJSON_IMPL(txCapture),
5637 TOJSON_IMPL(blobRtpPayloadType),
5639 TOJSON_IMPL(inboundAliasGenerationPolicy),
5641 TOJSON_IMPL(gateIn),
5643 TOJSON_IMPL(ignoreAudioTraffic)
5649 if(p._wasDeserialized_rtpProfile || p.isDocumenting())
5651 j[
"rtpProfile"] = p.rtpProfile;
5654 if(p.isDocumenting())
5656 j[
"rallypointCluster"] = p.rallypointCluster;
5657 j[
"rallypoints"] = p.rallypoints;
5662 if(!p.rallypointCluster.rallypoints.empty())
5664 j[
"rallypointCluster"] = p.rallypointCluster;
5666 else if(!p.rallypoints.empty())
5668 j[
"rallypoints"] = p.rallypoints;
5672 static void from_json(
const nlohmann::json& j, Group& p)
5675 j.at(
"type").get_to(p.type);
5676 getOptional<GroupBridgeTargetOutputDetail>(
"bridgeTargetOutputDetail", p.bridgeTargetOutputDetail, j);
5677 j.at(
"id").get_to(p.id);
5678 getOptional<std::string>(
"name", p.name, j);
5679 getOptional<std::string>(
"spokenName", p.spokenName, j);
5680 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
5681 getOptional<NetworkAddress>(
"rx", p.rx, j);
5682 getOptional<NetworkAddress>(
"tx", p.tx, j);
5683 getOptional<NetworkTxOptions>(
"txOptions", p.txOptions, j);
5684 getOptional<std::string>(
"cryptoPassword", p.cryptoPassword, j);
5685 getOptional<std::string>(
"alias", p.alias, j);
5686 getOptional<TxAudio>(
"txAudio", p.txAudio, j);
5687 getOptional<Presence>(
"presence", p.presence, j);
5688 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
5689 getOptional<RallypointCluster>(
"rallypointCluster", p.rallypointCluster, j);
5690 getOptional<Audio>(
"audio", p.audio, j);
5691 getOptional<GroupTimeline>(
"timeline", p.timeline, j);
5692 getOptional<bool>(
"blockAdvertising", p.blockAdvertising, j,
false);
5693 getOptional<std::string>(
"source", p.source, j);
5694 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
5695 getOptional<bool>(
"enableMulticastFailover", p.enableMulticastFailover, j,
false);
5696 getOptional<int>(
"multicastFailoverSecs", p.multicastFailoverSecs, j, 10);
5697 getOptional<NetworkAddress>(
"rtcpPresenceRx", p.rtcpPresenceRx, j);
5698 getOptional<std::vector<std::string>>(
"presenceGroupAffinities", p.presenceGroupAffinities, j);
5699 getOptional<bool>(
"disablePacketEvents", p.disablePacketEvents, j,
false);
5700 getOptional<int>(
"rfc4733RtpPayloadId", p.rfc4733RtpPayloadId, j, 0);
5701 getOptional<std::vector<RtpPayloadTypeTranslation>>(
"inboundRtpPayloadTypeTranslations", p.inboundRtpPayloadTypeTranslations, j);
5702 getOptional<GroupPriorityTranslation>(
"priorityTranslation", p.priorityTranslation, j);
5703 getOptional<GroupDefaultAudioPriority>(
"defaultAudioPriority", p.defaultAudioPriority, j);
5704 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
5705 getOptional<std::string>(
"anonymousAlias", p.anonymousAlias, j);
5706 getOptional<bool>(
"lbCrypto", p.lbCrypto, j,
false);
5707 getOptional<GroupAppTransport>(
"appTransport", p.appTransport, j);
5708 getOptional<bool>(
"allowLoopback", p.allowLoopback, j,
false);
5709 getOptionalWithIndicator<RtpProfile>(
"rtpProfile", p.rtpProfile, j, &p._wasDeserialized_rtpProfile);
5710 getOptional<RangerPackets>(
"rangerPackets", p.rangerPackets, j);
5711 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
5712 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
5713 getOptional<std::vector<uint16_t>>(
"specializerAffinities", p.specializerAffinities, j);
5714 getOptional<uint32_t>(
"securityLevel", p.securityLevel, j, 0);
5715 getOptional<std::vector<Source>>(
"ignoreSources", p.ignoreSources, j);
5716 getOptional<std::string>(
"languageCode", p.languageCode, j);
5717 getOptional<std::string>(
"synVoice", p.synVoice, j);
5719 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
5720 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
5724 getOptional<Group::InboundAliasGenerationPolicy_t>(
"inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
5726 getOptional<AudioGate>(
"gateIn", p.gateIn, j);
5728 getOptional<bool>(
"ignoreAudioTraffic", p.ignoreAudioTraffic, j,
false);
5730 FROMJSON_BASE_IMPL();
5735 JSON_SERIALIZED_CLASS(Mission)
5738 IMPLEMENT_JSON_SERIALIZATION()
5739 IMPLEMENT_JSON_DOCUMENTATION(
Mission)
5744 std::vector<Group> groups;
5745 std::chrono::system_clock::time_point begins;
5746 std::chrono::system_clock::time_point ends;
5747 std::string certStoreId;
5748 int multicastFailoverPolicy;
5756 certStoreId.clear();
5757 multicastFailoverPolicy = 0;
5762 static void to_json(nlohmann::json& j,
const Mission& p)
5767 TOJSON_IMPL(groups),
5768 TOJSON_IMPL(certStoreId),
5769 TOJSON_IMPL(multicastFailoverPolicy),
5770 TOJSON_IMPL(rallypoint)
5774 static void from_json(
const nlohmann::json& j, Mission& p)
5777 j.at(
"id").get_to(p.id);
5778 j.at(
"name").get_to(p.name);
5783 j.at(
"groups").get_to(p.groups);
5790 FROMJSON_IMPL(certStoreId, std::string, EMPTY_STRING);
5791 FROMJSON_IMPL(multicastFailoverPolicy,
int, 0);
5792 getOptional<Rallypoint>(
"rallypoint", p.rallypoint, j);
5796 JSON_SERIALIZED_CLASS(LicenseDescriptor)
5808 IMPLEMENT_JSON_SERIALIZATION()
5817 static const int STATUS_OK = 0;
5818 static const int ERR_NULL_ENTITLEMENT_KEY = -1;
5819 static const int ERR_NULL_LICENSE_KEY = -2;
5820 static const int ERR_INVALID_LICENSE_KEY_LEN = -3;
5821 static const int ERR_LICENSE_KEY_VERIFICATION_FAILURE = -4;
5822 static const int ERR_ACTIVATION_CODE_VERIFICATION_FAILURE = -5;
5823 static const int ERR_INVALID_EXPIRATION_DATE = -6;
5824 static const int ERR_GENERAL_FAILURE = -7;
5825 static const int ERR_NOT_INITIALIZED = -8;
5826 static const int ERR_REQUIRES_ACTIVATION = -9;
5827 static const int ERR_LICENSE_NOT_SUITED_FOR_ACTIVATION = -10;
5835 static const uint8_t LIC_CARGO_FLAG_LIMIT_TO_FEATURES = 0x01;
5902 entitlement.clear();
5904 activationCode.clear();
5907 expiresFormatted.clear();
5912 status = ERR_NOT_INITIALIZED;
5913 manufacturerId.clear();
5914 activationHmac.clear();
5918 static void to_json(nlohmann::json& j,
const LicenseDescriptor& p)
5922 {
"entitlement",
"*entitlement*"},
5924 TOJSON_IMPL(activationCode),
5926 TOJSON_IMPL(expires),
5927 TOJSON_IMPL(expiresFormatted),
5929 TOJSON_IMPL(deviceId),
5930 TOJSON_IMPL(status),
5932 {
"manufacturerId",
"*manufacturerId*"},
5934 TOJSON_IMPL(cargoFlags),
5935 TOJSON_IMPL(activationHmac)
5939 static void from_json(
const nlohmann::json& j, LicenseDescriptor& p)
5942 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
5943 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5944 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
5945 FROMJSON_IMPL(type,
int, 0);
5946 FROMJSON_IMPL(expires, time_t, 0);
5947 FROMJSON_IMPL(expiresFormatted, std::string, EMPTY_STRING);
5948 FROMJSON_IMPL(flags, uint32_t, 0);
5949 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
5950 FROMJSON_IMPL(status,
int, LicenseDescriptor::ERR_NOT_INITIALIZED);
5951 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
5952 FROMJSON_IMPL(cargo, std::string, EMPTY_STRING);
5953 FROMJSON_IMPL(cargoFlags, uint8_t, 0);
5954 FROMJSON_IMPL(activationHmac, std::string, EMPTY_STRING);
5959 JSON_SERIALIZED_CLASS(EngineNetworkingRpUdpStreaming)
5973 IMPLEMENT_JSON_SERIALIZATION()
6001 keepaliveIntervalSecs = 15;
6002 priority = TxPriority_t::priVoice;
6006 virtual void initForDocumenting()
6011 static void to_json(nlohmann::json& j,
const EngineNetworkingRpUdpStreaming& p)
6014 TOJSON_IMPL(enabled),
6016 TOJSON_IMPL(keepaliveIntervalSecs),
6017 TOJSON_IMPL(priority),
6021 static void from_json(
const nlohmann::json& j, EngineNetworkingRpUdpStreaming& p)
6024 getOptional<bool>(
"enabled", p.enabled, j,
false);
6025 getOptional<int>(
"port", p.port, j, 0);
6026 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
6027 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
6028 getOptional<int>(
"ttl", p.ttl, j, 64);
6032 JSON_SERIALIZED_CLASS(EnginePolicyNetworking)
6043 IMPLEMENT_JSON_SERIALIZATION()
6082 multicastRejoinSecs = 8;
6083 rallypointRtTestIntervalMs = 60000;
6084 logRtpJitterBufferStats =
false;
6085 preventMulticastFailover =
false;
6086 addressResolutionPolicy = AddressResolutionPolicy_t::arpIpv6ThenIpv4;
6087 requireMulticast =
true;
6088 rpUdpStreaming.clear();
6093 static void to_json(nlohmann::json& j,
const EnginePolicyNetworking& p)
6096 TOJSON_IMPL(defaultNic),
6097 TOJSON_IMPL(multicastRejoinSecs),
6099 TOJSON_IMPL(rallypointRtTestIntervalMs),
6100 TOJSON_IMPL(logRtpJitterBufferStats),
6101 TOJSON_IMPL(preventMulticastFailover),
6102 TOJSON_IMPL(requireMulticast),
6103 TOJSON_IMPL(rpUdpStreaming),
6104 TOJSON_IMPL(rtpProfile),
6105 TOJSON_IMPL(addressResolutionPolicy)
6108 static void from_json(
const nlohmann::json& j, EnginePolicyNetworking& p)
6111 FROMJSON_IMPL(defaultNic, std::string, EMPTY_STRING);
6112 FROMJSON_IMPL(multicastRejoinSecs,
int, 8);
6113 FROMJSON_IMPL(rallypointRtTestIntervalMs,
int, 60000);
6114 FROMJSON_IMPL(logRtpJitterBufferStats,
bool,
false);
6115 FROMJSON_IMPL(preventMulticastFailover,
bool,
false);
6116 FROMJSON_IMPL(requireMulticast,
bool,
true);
6117 getOptional<EngineNetworkingRpUdpStreaming>(
"rpUdpStreaming", p.rpUdpStreaming, j);
6118 getOptional<RtpProfile>(
"rtpProfile", p.rtpProfile, j);
6119 getOptional<AddressResolutionPolicy_t>(
"addressResolutionPolicy", p.addressResolutionPolicy, j, AddressResolutionPolicy_t::arpIpv6ThenIpv4);
6123 JSON_SERIALIZED_CLASS(Aec)
6135 IMPLEMENT_JSON_SERIALIZATION()
6136 IMPLEMENT_JSON_DOCUMENTATION(
Aec)
6191 static void to_json(nlohmann::json& j,
const Aec& p)
6194 TOJSON_IMPL(enabled),
6196 TOJSON_IMPL(speakerTailMs),
6200 static void from_json(
const nlohmann::json& j, Aec& p)
6203 FROMJSON_IMPL(enabled,
bool,
false);
6204 FROMJSON_IMPL(mode, Aec::Mode_t, Aec::Mode_t::aecmDefault);
6205 FROMJSON_IMPL(speakerTailMs,
int, 60);
6206 FROMJSON_IMPL(cng,
bool,
true);
6210 JSON_SERIALIZED_CLASS(Vad)
6222 IMPLEMENT_JSON_SERIALIZATION()
6223 IMPLEMENT_JSON_DOCUMENTATION(
Vad)
6243 vamVeryAggressive = 3
6264 static void to_json(nlohmann::json& j,
const Vad& p)
6267 TOJSON_IMPL(enabled),
6271 static void from_json(
const nlohmann::json& j, Vad& p)
6274 FROMJSON_IMPL(enabled,
bool,
false);
6275 FROMJSON_IMPL(mode, Vad::Mode_t, Vad::Mode_t::vamDefault);
6279 JSON_SERIALIZED_CLASS(Bridge)
6291 IMPLEMENT_JSON_SERIALIZATION()
6292 IMPLEMENT_JSON_DOCUMENTATION(
Bridge)
6328 static void to_json(nlohmann::json& j,
const Bridge& p)
6333 TOJSON_IMPL(groups),
6334 TOJSON_IMPL(enabled),
6338 static void from_json(
const nlohmann::json& j, Bridge& p)
6341 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
6342 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
6343 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
6344 FROMJSON_IMPL(enabled,
bool,
true);
6345 FROMJSON_IMPL(active,
bool,
true);
6349 JSON_SERIALIZED_CLASS(AndroidAudio)
6361 IMPLEMENT_JSON_SERIALIZATION()
6365 constexpr static int INVALID_SESSION_ID = -9999;
6426 performanceMode = 12;
6430 sessionId = AndroidAudio::INVALID_SESSION_ID;
6435 static void to_json(nlohmann::json& j,
const AndroidAudio& p)
6439 TOJSON_IMPL(sharingMode),
6440 TOJSON_IMPL(performanceMode),
6442 TOJSON_IMPL(contentType),
6443 TOJSON_IMPL(inputPreset),
6444 TOJSON_IMPL(sessionId),
6445 TOJSON_IMPL(engineMode)
6448 static void from_json(
const nlohmann::json& j, AndroidAudio& p)
6451 FROMJSON_IMPL(api,
int, 0);
6452 FROMJSON_IMPL(sharingMode,
int, 0);
6453 FROMJSON_IMPL(performanceMode,
int, 12);
6454 FROMJSON_IMPL(usage,
int, 2);
6455 FROMJSON_IMPL(contentType,
int, 1);
6456 FROMJSON_IMPL(inputPreset,
int, 7);
6457 FROMJSON_IMPL(sessionId,
int, AndroidAudio::INVALID_SESSION_ID);
6458 FROMJSON_IMPL(engineMode,
int, 0);
6462 JSON_SERIALIZED_CLASS(EnginePolicyAudio)
6474 IMPLEMENT_JSON_SERIALIZATION()
6532 hardwareEnabled =
true;
6533 internalRate = 16000;
6534 internalChannels = 2;
6541 denoiseInput =
false;
6542 denoiseOutput =
false;
6543 saveInputPcm =
false;
6544 saveOutputPcm =
false;
6549 static void to_json(nlohmann::json& j,
const EnginePolicyAudio& p)
6552 TOJSON_IMPL(enabled),
6553 TOJSON_IMPL(hardwareEnabled),
6554 TOJSON_IMPL(internalRate),
6555 TOJSON_IMPL(internalChannels),
6556 TOJSON_IMPL(muteTxOnTx),
6559 TOJSON_IMPL(android),
6560 TOJSON_IMPL(inputAgc),
6561 TOJSON_IMPL(outputAgc),
6562 TOJSON_IMPL(denoiseInput),
6563 TOJSON_IMPL(denoiseOutput),
6564 TOJSON_IMPL(saveInputPcm),
6565 TOJSON_IMPL(saveOutputPcm),
6566 TOJSON_IMPL(registry)
6569 static void from_json(
const nlohmann::json& j, EnginePolicyAudio& p)
6572 getOptional<bool>(
"enabled", p.enabled, j,
true);
6573 getOptional<bool>(
"hardwareEnabled", p.hardwareEnabled, j,
true);
6574 FROMJSON_IMPL(internalRate,
int, 16000);
6575 FROMJSON_IMPL(internalChannels,
int, 2);
6577 FROMJSON_IMPL(muteTxOnTx,
bool,
false);
6578 getOptional<Aec>(
"aec", p.aec, j);
6579 getOptional<Vad>(
"vad", p.vad, j);
6580 getOptional<AndroidAudio>(
"android", p.android, j);
6581 getOptional<Agc>(
"inputAgc", p.inputAgc, j);
6582 getOptional<Agc>(
"outputAgc", p.outputAgc, j);
6583 FROMJSON_IMPL(denoiseInput,
bool,
false);
6584 FROMJSON_IMPL(denoiseOutput,
bool,
false);
6585 FROMJSON_IMPL(saveInputPcm,
bool,
false);
6586 FROMJSON_IMPL(saveOutputPcm,
bool,
false);
6587 getOptional<AudioRegistry>(
"registry", p.registry, j);
6591 JSON_SERIALIZED_CLASS(SecurityCertificate)
6603 IMPLEMENT_JSON_SERIALIZATION()
6625 certificate.clear();
6630 static void to_json(nlohmann::json& j,
const SecurityCertificate& p)
6633 TOJSON_IMPL(certificate),
6637 static void from_json(
const nlohmann::json& j, SecurityCertificate& p)
6640 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6641 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6646 JSON_SERIALIZED_CLASS(EnginePolicySecurity)
6659 IMPLEMENT_JSON_SERIALIZATION()
6692 certificate.clear();
6693 caCertificates.clear();
6697 static void to_json(nlohmann::json& j,
const EnginePolicySecurity& p)
6700 TOJSON_IMPL(certificate),
6701 TOJSON_IMPL(caCertificates)
6704 static void from_json(
const nlohmann::json& j, EnginePolicySecurity& p)
6707 getOptional(
"certificate", p.certificate, j);
6708 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
6712 JSON_SERIALIZED_CLASS(EnginePolicyLogging)
6724 IMPLEMENT_JSON_SERIALIZATION()
6757 enableSyslog =
false;
6761 static void to_json(nlohmann::json& j,
const EnginePolicyLogging& p)
6764 TOJSON_IMPL(maxLevel),
6765 TOJSON_IMPL(enableSyslog)
6768 static void from_json(
const nlohmann::json& j, EnginePolicyLogging& p)
6771 getOptional(
"maxLevel", p.maxLevel, j, 4);
6772 getOptional(
"enableSyslog", p.enableSyslog, j);
6777 JSON_SERIALIZED_CLASS(EnginePolicyDatabase)
6780 IMPLEMENT_JSON_SERIALIZATION()
6791 DatabaseType_t type;
6792 std::string fixedFileName;
6793 bool forceMaintenance;
6803 type = DatabaseType_t::dbtFixedMemory;
6804 fixedFileName.clear();
6805 forceMaintenance =
false;
6806 reclaimSpace =
false;
6814 TOJSON_IMPL(fixedFileName),
6815 TOJSON_IMPL(forceMaintenance),
6816 TOJSON_IMPL(reclaimSpace)
6819 static void from_json(
const nlohmann::json& j, EnginePolicyDatabase& p)
6822 FROMJSON_IMPL(type, EnginePolicyDatabase::DatabaseType_t, EnginePolicyDatabase::DatabaseType_t::dbtFixedMemory);
6823 FROMJSON_IMPL(fixedFileName, std::string, EMPTY_STRING);
6824 FROMJSON_IMPL(forceMaintenance,
bool,
false);
6825 FROMJSON_IMPL(reclaimSpace,
bool,
false);
6830 JSON_SERIALIZED_CLASS(SecureSignature)
6840 IMPLEMENT_JSON_SERIALIZATION()
6861 certificate.clear();
6867 static void to_json(nlohmann::json& j,
const SecureSignature& p)
6870 TOJSON_IMPL(certificate),
6872 TOJSON_IMPL(signature)
6875 static void from_json(
const nlohmann::json& j, SecureSignature& p)
6878 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6880 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
6884 JSON_SERIALIZED_CLASS(NamedAudioDevice)
6887 IMPLEMENT_JSON_SERIALIZATION()
6892 std::string manufacturer;
6895 std::string serialNumber;
6908 manufacturer.clear();
6911 serialNumber.clear();
6922 TOJSON_IMPL(manufacturer),
6925 TOJSON_IMPL(serialNumber),
6928 TOJSON_IMPL(isDefault),
6931 static void from_json(
const nlohmann::json& j, NamedAudioDevice& p)
6934 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6935 getOptional<std::string>(
"manufacturer", p.manufacturer, j, EMPTY_STRING);
6936 getOptional<std::string>(
"model", p.model, j, EMPTY_STRING);
6937 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
6938 getOptional<std::string>(
"serialNumber", p.serialNumber, j, EMPTY_STRING);
6939 getOptional<std::string>(
"type", p.type, j, EMPTY_STRING);
6940 getOptional<std::string>(
"extra", p.extra, j, EMPTY_STRING);
6941 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
6946 JSON_SERIALIZED_CLASS(EnginePolicyNamedAudioDevices)
6949 IMPLEMENT_JSON_SERIALIZATION()
6953 std::vector<NamedAudioDevice> inputs;
6954 std::vector<NamedAudioDevice> outputs;
6971 TOJSON_IMPL(inputs),
6972 TOJSON_IMPL(outputs)
6975 static void from_json(
const nlohmann::json& j, EnginePolicyNamedAudioDevices& p)
6978 getOptional<std::vector<NamedAudioDevice>>(
"inputs", p.inputs, j);
6979 getOptional<std::vector<NamedAudioDevice>>(
"outputs", p.outputs, j);
6983 JSON_SERIALIZED_CLASS(Licensing)
6997 IMPLEMENT_JSON_SERIALIZATION()
7024 entitlement.clear();
7026 activationCode.clear();
7028 manufacturerId.clear();
7032 static void to_json(nlohmann::json& j,
const Licensing& p)
7035 TOJSON_IMPL(entitlement),
7037 TOJSON_IMPL(activationCode),
7038 TOJSON_IMPL(deviceId),
7039 TOJSON_IMPL(manufacturerId)
7042 static void from_json(
const nlohmann::json& j, Licensing& p)
7045 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
7046 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
7047 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
7048 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
7049 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
7053 JSON_SERIALIZED_CLASS(DiscoveryMagellan)
7065 IMPLEMENT_JSON_SERIALIZATION()
7090 interfaceName.clear();
7096 static void to_json(nlohmann::json& j,
const DiscoveryMagellan& p)
7099 TOJSON_IMPL(enabled),
7100 TOJSON_IMPL(interfaceName),
7101 TOJSON_IMPL(security),
7105 static void from_json(
const nlohmann::json& j, DiscoveryMagellan& p)
7108 getOptional(
"enabled", p.enabled, j,
false);
7109 getOptional<Tls>(
"tls", p.tls, j);
7110 getOptional<SecurityCertificate>(
"security", p.security, j);
7111 FROMJSON_IMPL(interfaceName, std::string, EMPTY_STRING);
7115 JSON_SERIALIZED_CLASS(DiscoverySsdp)
7127 IMPLEMENT_JSON_SERIALIZATION()
7158 interfaceName.clear();
7160 searchTerms.clear();
7161 ageTimeoutMs = 30000;
7162 advertising.clear();
7166 static void to_json(nlohmann::json& j,
const DiscoverySsdp& p)
7169 TOJSON_IMPL(enabled),
7170 TOJSON_IMPL(interfaceName),
7171 TOJSON_IMPL(address),
7172 TOJSON_IMPL(searchTerms),
7173 TOJSON_IMPL(ageTimeoutMs),
7174 TOJSON_IMPL(advertising)
7177 static void from_json(
const nlohmann::json& j, DiscoverySsdp& p)
7180 getOptional(
"enabled", p.enabled, j,
false);
7181 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7183 getOptional<NetworkAddress>(
"address", p.address, j);
7184 if(p.address.address.empty())
7186 p.address.address =
"255.255.255.255";
7188 if(p.address.port <= 0)
7190 p.address.port = 1900;
7193 getOptional<std::vector<std::string>>(
"searchTerms", p.searchTerms, j);
7194 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7195 getOptional<Advertising>(
"advertising", p.advertising, j);
7199 JSON_SERIALIZED_CLASS(DiscoverySap)
7211 IMPLEMENT_JSON_SERIALIZATION()
7238 interfaceName.clear();
7240 ageTimeoutMs = 30000;
7241 advertising.clear();
7245 static void to_json(nlohmann::json& j,
const DiscoverySap& p)
7248 TOJSON_IMPL(enabled),
7249 TOJSON_IMPL(interfaceName),
7250 TOJSON_IMPL(address),
7251 TOJSON_IMPL(ageTimeoutMs),
7252 TOJSON_IMPL(advertising)
7255 static void from_json(
const nlohmann::json& j, DiscoverySap& p)
7258 getOptional(
"enabled", p.enabled, j,
false);
7259 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7260 getOptional<NetworkAddress>(
"address", p.address, j);
7261 if(p.address.address.empty())
7263 p.address.address =
"224.2.127.254";
7265 if(p.address.port <= 0)
7267 p.address.port = 9875;
7270 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7271 getOptional<Advertising>(
"advertising", p.advertising, j);
7275 JSON_SERIALIZED_CLASS(DiscoveryCistech)
7289 IMPLEMENT_JSON_SERIALIZATION()
7294 std::string interfaceName;
7306 interfaceName.clear();
7308 ageTimeoutMs = 30000;
7315 TOJSON_IMPL(enabled),
7316 TOJSON_IMPL(interfaceName),
7317 TOJSON_IMPL(address),
7318 TOJSON_IMPL(ageTimeoutMs)
7321 static void from_json(
const nlohmann::json& j, DiscoveryCistech& p)
7324 getOptional(
"enabled", p.enabled, j,
false);
7325 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7326 getOptional<NetworkAddress>(
"address", p.address, j);
7327 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7332 JSON_SERIALIZED_CLASS(DiscoveryTrellisware)
7344 IMPLEMENT_JSON_SERIALIZATION()
7367 static void to_json(nlohmann::json& j,
const DiscoveryTrellisware& p)
7370 TOJSON_IMPL(enabled),
7371 TOJSON_IMPL(security)
7374 static void from_json(
const nlohmann::json& j, DiscoveryTrellisware& p)
7377 getOptional(
"enabled", p.enabled, j,
false);
7378 getOptional<SecurityCertificate>(
"security", p.security, j);
7382 JSON_SERIALIZED_CLASS(DiscoveryConfiguration)
7394 IMPLEMENT_JSON_SERIALIZATION()
7427 static void to_json(nlohmann::json& j,
const DiscoveryConfiguration& p)
7430 TOJSON_IMPL(magellan),
7433 TOJSON_IMPL(cistech),
7434 TOJSON_IMPL(trellisware)
7437 static void from_json(
const nlohmann::json& j, DiscoveryConfiguration& p)
7440 getOptional<DiscoveryMagellan>(
"magellan", p.magellan, j);
7441 getOptional<DiscoverySsdp>(
"ssdp", p.ssdp, j);
7442 getOptional<DiscoverySap>(
"sap", p.sap, j);
7443 getOptional<DiscoveryCistech>(
"cistech", p.cistech, j);
7444 getOptional<DiscoveryTrellisware>(
"trellisware", p.trellisware, j);
7449 JSON_SERIALIZED_CLASS(EnginePolicyInternals)
7463 IMPLEMENT_JSON_SERIALIZATION()
7478 int logTaskQueueStatsIntervalMs;
7480 bool enableLazySpeakerClosure;
7517 housekeeperIntervalMs = 1000;
7518 logTaskQueueStatsIntervalMs = 0;
7521 enableLazySpeakerClosure =
false;
7522 rpClusterStrategy = RallypointCluster::ConnectionStrategy_t::csRoundRobin;
7523 rpClusterRolloverSecs = 10;
7524 rtpExpirationCheckIntervalMs = 250;
7525 rpConnectionTimeoutSecs = 0;
7526 rpTransactionTimeoutMs = 0;
7527 stickyTidHangSecs = 10;
7528 uriStreamingIntervalMs = 60;
7529 delayedMicrophoneClosureSecs = 15;
7534 static void to_json(nlohmann::json& j,
const EnginePolicyInternals& p)
7537 TOJSON_IMPL(watchdog),
7538 TOJSON_IMPL(housekeeperIntervalMs),
7539 TOJSON_IMPL(logTaskQueueStatsIntervalMs),
7540 TOJSON_IMPL(maxTxSecs),
7541 TOJSON_IMPL(maxRxSecs),
7542 TOJSON_IMPL(enableLazySpeakerClosure),
7543 TOJSON_IMPL(rpClusterStrategy),
7544 TOJSON_IMPL(rpClusterRolloverSecs),
7545 TOJSON_IMPL(rtpExpirationCheckIntervalMs),
7546 TOJSON_IMPL(rpConnectionTimeoutSecs),
7547 TOJSON_IMPL(rpTransactionTimeoutMs),
7548 TOJSON_IMPL(stickyTidHangSecs),
7549 TOJSON_IMPL(uriStreamingIntervalMs),
7550 TOJSON_IMPL(delayedMicrophoneClosureSecs),
7554 static void from_json(
const nlohmann::json& j, EnginePolicyInternals& p)
7557 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
7558 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
7559 getOptional<int>(
"logTaskQueueStatsIntervalMs", p.logTaskQueueStatsIntervalMs, j, 0);
7560 getOptional<int>(
"maxTxSecs", p.maxTxSecs, j, 30);
7561 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
7562 getOptional<bool>(
"enableLazySpeakerClosure", p.enableLazySpeakerClosure, j,
false);
7563 getOptional<RallypointCluster::ConnectionStrategy_t>(
"rpClusterStrategy", p.rpClusterStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
7564 getOptional<int>(
"rpClusterRolloverSecs", p.rpClusterRolloverSecs, j, 10);
7565 getOptional<int>(
"rtpExpirationCheckIntervalMs", p.rtpExpirationCheckIntervalMs, j, 250);
7566 getOptional<int>(
"rpConnectionTimeoutSecs", p.rpConnectionTimeoutSecs, j, 0);
7567 getOptional<int>(
"rpTransactionTimeoutMs", p.rpTransactionTimeoutMs, j, 0);
7568 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
7569 getOptional<int>(
"uriStreamingIntervalMs", p.uriStreamingIntervalMs, j, 60);
7570 getOptional<int>(
"delayedMicrophoneClosureSecs", p.delayedMicrophoneClosureSecs, j, 15);
7571 getOptional<TuningSettings>(
"tuning", p.tuning, j);
7575 JSON_SERIALIZED_CLASS(EnginePolicyTimelines)
7589 IMPLEMENT_JSON_SERIALIZATION()
7651 storageRoot.clear();
7652 maxStorageMb = 1024;
7653 maxMemMb = maxStorageMb;
7654 maxAudioEventMemMb = maxMemMb;
7655 maxDiskMb = maxStorageMb;
7656 maxEventAgeSecs = (86400 * 30);
7657 groomingIntervalSecs = (60 * 30);
7659 autosaveIntervalSecs = 5;
7661 disableSigningAndVerification =
false;
7666 static void to_json(nlohmann::json& j,
const EnginePolicyTimelines& p)
7669 TOJSON_IMPL(enabled),
7670 TOJSON_IMPL(storageRoot),
7671 TOJSON_IMPL(maxMemMb),
7672 TOJSON_IMPL(maxAudioEventMemMb),
7673 TOJSON_IMPL(maxDiskMb),
7674 TOJSON_IMPL(maxEventAgeSecs),
7675 TOJSON_IMPL(maxEvents),
7676 TOJSON_IMPL(groomingIntervalSecs),
7677 TOJSON_IMPL(autosaveIntervalSecs),
7678 TOJSON_IMPL(security),
7679 TOJSON_IMPL(disableSigningAndVerification),
7680 TOJSON_IMPL(ephemeral)
7683 static void from_json(
const nlohmann::json& j, EnginePolicyTimelines& p)
7686 getOptional<bool>(
"enabled", p.enabled, j,
true);
7687 getOptional<std::string>(
"storageRoot", p.storageRoot, j, EMPTY_STRING);
7689 getOptional<int>(
"maxStorageMb", p.maxStorageMb, j, 1024);
7690 getOptional<int>(
"maxMemMb", p.maxMemMb, j, p.maxStorageMb);
7691 getOptional<int>(
"maxAudioEventMemMb", p.maxAudioEventMemMb, j, p.maxMemMb);
7692 getOptional<int>(
"maxDiskMb", p.maxDiskMb, j, p.maxStorageMb);
7693 getOptional<long>(
"maxEventAgeSecs", p.maxEventAgeSecs, j, (86400 * 30));
7694 getOptional<long>(
"groomingIntervalSecs", p.groomingIntervalSecs, j, (60 * 30));
7695 getOptional<long>(
"autosaveIntervalSecs", p.autosaveIntervalSecs, j, 5);
7696 getOptional<int>(
"maxEvents", p.maxEvents, j, 1000);
7697 getOptional<SecurityCertificate>(
"security", p.security, j);
7698 getOptional<bool>(
"disableSigningAndVerification", p.disableSigningAndVerification, j,
false);
7699 getOptional<bool>(
"ephemeral", p.ephemeral, j,
false);
7704 JSON_SERIALIZED_CLASS(RtpMapEntry)
7716 IMPLEMENT_JSON_SERIALIZATION()
7738 rtpPayloadType = -1;
7742 static void to_json(nlohmann::json& j,
const RtpMapEntry& p)
7746 TOJSON_IMPL(engageType),
7747 TOJSON_IMPL(rtpPayloadType)
7750 static void from_json(
const nlohmann::json& j, RtpMapEntry& p)
7753 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7754 getOptional<int>(
"engageType", p.engageType, j, -1);
7755 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7759 JSON_SERIALIZED_CLASS(ExternalModule)
7771 IMPLEMENT_JSON_SERIALIZATION()
7793 configuration.clear();
7797 static void to_json(nlohmann::json& j,
const ExternalModule& p)
7804 if(!p.configuration.empty())
7806 j[
"configuration"] = p.configuration;
7809 static void from_json(
const nlohmann::json& j, ExternalModule& p)
7812 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7813 getOptional<std::string>(
"file", p.file, j, EMPTY_STRING);
7817 p.configuration = j.at(
"configuration");
7821 p.configuration.clear();
7827 JSON_SERIALIZED_CLASS(ExternalCodecDescriptor)
7839 IMPLEMENT_JSON_SERIALIZATION()
7862 rtpPayloadType = -1;
7865 rtpTsMultiplier = 0;
7869 static void to_json(nlohmann::json& j,
const ExternalCodecDescriptor& p)
7872 TOJSON_IMPL(rtpPayloadType),
7873 TOJSON_IMPL(samplingRate),
7874 TOJSON_IMPL(channels),
7875 TOJSON_IMPL(rtpTsMultiplier)
7878 static void from_json(
const nlohmann::json& j, ExternalCodecDescriptor& p)
7882 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7883 getOptional<int>(
"samplingRate", p.samplingRate, j, -1);
7884 getOptional<int>(
"channels", p.channels, j, -1);
7885 getOptional<int>(
"rtpTsMultiplier", p.rtpTsMultiplier, j, -1);
7889 JSON_SERIALIZED_CLASS(EngineStatusReportConfiguration)
7901 IMPLEMENT_JSON_SERIALIZATION()
7933 includeMemoryDetail =
false;
7934 includeTaskQueueDetail =
false;
7939 static void to_json(nlohmann::json& j,
const EngineStatusReportConfiguration& p)
7942 TOJSON_IMPL(fileName),
7943 TOJSON_IMPL(intervalSecs),
7944 TOJSON_IMPL(enabled),
7945 TOJSON_IMPL(includeMemoryDetail),
7946 TOJSON_IMPL(includeTaskQueueDetail),
7950 static void from_json(
const nlohmann::json& j, EngineStatusReportConfiguration& p)
7953 getOptional<std::string>(
"fileName", p.fileName, j);
7954 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
7955 getOptional<bool>(
"enabled", p.enabled, j,
false);
7956 getOptional<std::string>(
"runCmd", p.runCmd, j);
7957 getOptional<bool>(
"includeMemoryDetail", p.includeMemoryDetail, j,
false);
7958 getOptional<bool>(
"includeTaskQueueDetail", p.includeTaskQueueDetail, j,
false);
7962 JSON_SERIALIZED_CLASS(EnginePolicy)
7976 IMPLEMENT_JSON_SERIALIZATION()
8033 dataDirectory.clear();
8044 namedAudioDevices.clear();
8045 externalCodecs.clear();
8047 statusReport.clear();
8051 static void to_json(nlohmann::json& j,
const EnginePolicy& p)
8054 TOJSON_IMPL(dataDirectory),
8055 TOJSON_IMPL(licensing),
8056 TOJSON_IMPL(security),
8057 TOJSON_IMPL(networking),
8059 TOJSON_IMPL(discovery),
8060 TOJSON_IMPL(logging),
8061 TOJSON_IMPL(internals),
8062 TOJSON_IMPL(timelines),
8063 TOJSON_IMPL(database),
8064 TOJSON_IMPL(featureset),
8065 TOJSON_IMPL(namedAudioDevices),
8066 TOJSON_IMPL(externalCodecs),
8067 TOJSON_IMPL(rtpMap),
8068 TOJSON_IMPL(statusReport)
8071 static void from_json(
const nlohmann::json& j, EnginePolicy& p)
8074 FROMJSON_IMPL_SIMPLE(dataDirectory);
8075 FROMJSON_IMPL_SIMPLE(licensing);
8076 FROMJSON_IMPL_SIMPLE(security);
8077 FROMJSON_IMPL_SIMPLE(networking);
8078 FROMJSON_IMPL_SIMPLE(audio);
8079 FROMJSON_IMPL_SIMPLE(discovery);
8080 FROMJSON_IMPL_SIMPLE(logging);
8081 FROMJSON_IMPL_SIMPLE(internals);
8082 FROMJSON_IMPL_SIMPLE(timelines);
8083 FROMJSON_IMPL_SIMPLE(database);
8084 FROMJSON_IMPL_SIMPLE(featureset);
8085 FROMJSON_IMPL_SIMPLE(namedAudioDevices);
8086 FROMJSON_IMPL_SIMPLE(externalCodecs);
8087 FROMJSON_IMPL_SIMPLE(rtpMap);
8088 FROMJSON_IMPL_SIMPLE(statusReport);
8093 JSON_SERIALIZED_CLASS(TalkgroupAsset)
8105 IMPLEMENT_JSON_SERIALIZATION()
8128 static void to_json(nlohmann::json& j,
const TalkgroupAsset& p)
8131 TOJSON_IMPL(nodeId),
8135 static void from_json(
const nlohmann::json& j, TalkgroupAsset& p)
8138 getOptional<std::string>(
"nodeId", p.nodeId, j);
8139 getOptional<Group>(
"group", p.group, j);
8143 JSON_SERIALIZED_CLASS(EngageDiscoveredGroup)
8153 IMPLEMENT_JSON_SERIALIZATION()
8183 static void to_json(nlohmann::json& j,
const EngageDiscoveredGroup& p)
8192 static void from_json(
const nlohmann::json& j, EngageDiscoveredGroup& p)
8195 getOptional<std::string>(
"id", p.id, j);
8196 getOptional<int>(
"type", p.type, j, 0);
8197 getOptional<NetworkAddress>(
"rx", p.rx, j);
8198 getOptional<NetworkAddress>(
"tx", p.tx, j);
8202 JSON_SERIALIZED_CLASS(RallypointPeer)
8214 IMPLEMENT_JSON_SERIALIZATION()
8221 olpUseRpConfiguration = 0,
8228 } OutboundLeafPolicy_t;
8233 olpUseRpWebSocketTlsConfiguration = 0,
8236 olpUseTlsForWebSocket = 1,
8239 olpDoNotUseTlsForWebSocket = 2
8240 } OutboundWebSocketTlsPolicy_t;
8284 certificate.clear();
8285 connectionTimeoutSecs = 0;
8286 forceIsMeshLeaf =
false;
8287 outboundLeafPolicy = OutboundLeafPolicy_t::olpUseRpConfiguration;
8288 protocol = Rallypoint::RpProtocol_t::rppTlsTcp;
8290 additionalProtocols.clear();
8291 outboundWebSocketTlsPolicy = OutboundWebSocketTlsPolicy_t::olpUseRpWebSocketTlsConfiguration;
8295 static void to_json(nlohmann::json& j,
const RallypointPeer& p)
8299 TOJSON_IMPL(enabled),
8301 TOJSON_IMPL(certificate),
8302 TOJSON_IMPL(connectionTimeoutSecs),
8303 TOJSON_IMPL(forceIsMeshLeaf),
8304 TOJSON_IMPL(outboundLeafPolicy),
8305 TOJSON_IMPL(protocol),
8307 TOJSON_IMPL(additionalProtocols),
8308 TOJSON_IMPL(outboundWebSocketTlsPolicy)
8311 static void from_json(
const nlohmann::json& j, RallypointPeer& p)
8314 j.at(
"id").get_to(p.id);
8315 getOptional<bool>(
"enabled", p.enabled, j,
true);
8316 getOptional<NetworkAddress>(
"host", p.host, j);
8317 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8318 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
8319 getOptional<bool>(
"forceIsMeshLeaf", p.forceIsMeshLeaf, j,
false);
8320 getOptional<RallypointPeer::OutboundLeafPolicy_t>(
"outboundLeafPolicy", p.outboundLeafPolicy, j, RallypointPeer::OutboundLeafPolicy_t::olpUseRpConfiguration);
8321 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
8322 getOptional<std::string>(
"path", p.path, j);
8323 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
8324 getOptional<RallypointPeer::OutboundWebSocketTlsPolicy_t>(
"outboundWebSocketTlsPolicy", p.outboundWebSocketTlsPolicy, j, RallypointPeer::OutboundWebSocketTlsPolicy_t::olpUseRpWebSocketTlsConfiguration);
8328 JSON_SERIALIZED_CLASS(RallypointServerLimits)
8340 IMPLEMENT_JSON_SERIALIZATION()
8398 maxMulticastReflectors = 0;
8399 maxRegisteredStreams = 0;
8401 maxRxPacketsPerSec = 0;
8402 maxTxPacketsPerSec = 0;
8403 maxRxBytesPerSec = 0;
8404 maxTxBytesPerSec = 0;
8406 maxInboundBacklog = 64;
8407 lowPriorityQueueThreshold = 64;
8408 normalPriorityQueueThreshold = 256;
8409 denyNewConnectionCpuThreshold = 75;
8410 warnAtCpuThreshold = 65;
8414 static void to_json(nlohmann::json& j,
const RallypointServerLimits& p)
8417 TOJSON_IMPL(maxClients),
8418 TOJSON_IMPL(maxPeers),
8419 TOJSON_IMPL(maxMulticastReflectors),
8420 TOJSON_IMPL(maxRegisteredStreams),
8421 TOJSON_IMPL(maxStreamPaths),
8422 TOJSON_IMPL(maxRxPacketsPerSec),
8423 TOJSON_IMPL(maxTxPacketsPerSec),
8424 TOJSON_IMPL(maxRxBytesPerSec),
8425 TOJSON_IMPL(maxTxBytesPerSec),
8426 TOJSON_IMPL(maxQOpsPerSec),
8427 TOJSON_IMPL(maxInboundBacklog),
8428 TOJSON_IMPL(lowPriorityQueueThreshold),
8429 TOJSON_IMPL(normalPriorityQueueThreshold),
8430 TOJSON_IMPL(denyNewConnectionCpuThreshold),
8431 TOJSON_IMPL(warnAtCpuThreshold)
8434 static void from_json(
const nlohmann::json& j, RallypointServerLimits& p)
8437 getOptional<uint32_t>(
"maxClients", p.maxClients, j, 0);
8438 getOptional<uint32_t>(
"maxPeers", p.maxPeers, j, 0);
8439 getOptional<uint32_t>(
"maxMulticastReflectors", p.maxMulticastReflectors, j, 0);
8440 getOptional<uint32_t>(
"maxRegisteredStreams", p.maxRegisteredStreams, j, 0);
8441 getOptional<uint32_t>(
"maxStreamPaths", p.maxStreamPaths, j, 0);
8442 getOptional<uint32_t>(
"maxRxPacketsPerSec", p.maxRxPacketsPerSec, j, 0);
8443 getOptional<uint32_t>(
"maxTxPacketsPerSec", p.maxTxPacketsPerSec, j, 0);
8444 getOptional<uint32_t>(
"maxRxBytesPerSec", p.maxRxBytesPerSec, j, 0);
8445 getOptional<uint32_t>(
"maxTxBytesPerSec", p.maxTxBytesPerSec, j, 0);
8446 getOptional<uint32_t>(
"maxQOpsPerSec", p.maxQOpsPerSec, j, 0);
8447 getOptional<uint32_t>(
"maxInboundBacklog", p.maxInboundBacklog, j, 64);
8448 getOptional<uint32_t>(
"lowPriorityQueueThreshold", p.lowPriorityQueueThreshold, j, 64);
8449 getOptional<uint32_t>(
"normalPriorityQueueThreshold", p.normalPriorityQueueThreshold, j, 256);
8450 getOptional<uint32_t>(
"denyNewConnectionCpuThreshold", p.denyNewConnectionCpuThreshold, j, 75);
8451 getOptional<uint32_t>(
"warnAtCpuThreshold", p.warnAtCpuThreshold, j, 65);
8455 JSON_SERIALIZED_CLASS(RallypointServerStatusReportConfiguration)
8467 IMPLEMENT_JSON_SERIALIZATION()
8502 includeLinks =
false;
8503 includePeerLinkDetails =
false;
8504 includeClientLinkDetails =
false;
8509 static void to_json(nlohmann::json& j,
const RallypointServerStatusReportConfiguration& p)
8512 TOJSON_IMPL(fileName),
8513 TOJSON_IMPL(intervalSecs),
8514 TOJSON_IMPL(enabled),
8515 TOJSON_IMPL(includeLinks),
8516 TOJSON_IMPL(includePeerLinkDetails),
8517 TOJSON_IMPL(includeClientLinkDetails),
8521 static void from_json(
const nlohmann::json& j, RallypointServerStatusReportConfiguration& p)
8524 getOptional<std::string>(
"fileName", p.fileName, j);
8525 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8526 getOptional<bool>(
"enabled", p.enabled, j,
false);
8527 getOptional<bool>(
"includeLinks", p.includeLinks, j,
false);
8528 getOptional<bool>(
"includePeerLinkDetails", p.includePeerLinkDetails, j,
false);
8529 getOptional<bool>(
"includeClientLinkDetails", p.includeClientLinkDetails, j,
false);
8530 getOptional<std::string>(
"runCmd", p.runCmd, j);
8534 JSON_SERIALIZED_CLASS(RallypointServerLinkGraph)
8537 IMPLEMENT_JSON_SERIALIZATION()
8580 includeDigraphEnclosure =
true;
8581 includeClients =
false;
8582 coreRpStyling =
"[shape=hexagon color=firebrick style=filled]";
8583 leafRpStyling =
"[shape=box color=gray style=filled]";
8584 clientStyling.clear();
8589 static void to_json(nlohmann::json& j,
const RallypointServerLinkGraph& p)
8592 TOJSON_IMPL(fileName),
8593 TOJSON_IMPL(minRefreshSecs),
8594 TOJSON_IMPL(enabled),
8595 TOJSON_IMPL(includeDigraphEnclosure),
8596 TOJSON_IMPL(includeClients),
8597 TOJSON_IMPL(coreRpStyling),
8598 TOJSON_IMPL(leafRpStyling),
8599 TOJSON_IMPL(clientStyling),
8603 static void from_json(
const nlohmann::json& j, RallypointServerLinkGraph& p)
8606 getOptional<std::string>(
"fileName", p.fileName, j);
8607 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8608 getOptional<bool>(
"enabled", p.enabled, j,
false);
8609 getOptional<bool>(
"includeDigraphEnclosure", p.includeDigraphEnclosure, j,
true);
8610 getOptional<bool>(
"includeClients", p.includeClients, j,
false);
8611 getOptional<std::string>(
"coreRpStyling", p.coreRpStyling, j,
"[shape=hexagon color=firebrick style=filled]");
8612 getOptional<std::string>(
"leafRpStyling", p.leafRpStyling, j,
"[shape=box color=gray style=filled]");
8613 getOptional<std::string>(
"clientStyling", p.clientStyling, j);
8614 getOptional<std::string>(
"runCmd", p.runCmd, j);
8619 JSON_SERIALIZED_CLASS(RallypointServerStreamStatsExport)
8629 IMPLEMENT_JSON_SERIALIZATION()
8672 resetCountersAfterExport =
false;
8678 static void to_json(nlohmann::json& j,
const RallypointServerStreamStatsExport& p)
8681 TOJSON_IMPL(fileName),
8682 TOJSON_IMPL(intervalSecs),
8683 TOJSON_IMPL(enabled),
8684 TOJSON_IMPL(resetCountersAfterExport),
8685 TOJSON_IMPL(runCmd),
8689 static void from_json(
const nlohmann::json& j, RallypointServerStreamStatsExport& p)
8692 getOptional<std::string>(
"fileName", p.fileName, j);
8693 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8694 getOptional<bool>(
"enabled", p.enabled, j,
false);
8695 getOptional<bool>(
"resetCountersAfterExport", p.resetCountersAfterExport, j,
false);
8696 getOptional<std::string>(
"runCmd", p.runCmd, j);
8697 getOptional<RallypointServerStreamStatsExport::ExportFormat_t>(
"format", p.format, j, RallypointServerStreamStatsExport::ExportFormat_t::fmtCsv);
8701 JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
8704 IMPLEMENT_JSON_SERIALIZATION()
8733 static void to_json(nlohmann::json& j,
const RallypointServerRouteMap& p)
8736 TOJSON_IMPL(fileName),
8737 TOJSON_IMPL(minRefreshSecs),
8738 TOJSON_IMPL(enabled),
8742 static void from_json(
const nlohmann::json& j, RallypointServerRouteMap& p)
8745 getOptional<std::string>(
"fileName", p.fileName, j);
8746 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8747 getOptional<bool>(
"enabled", p.enabled, j,
false);
8748 getOptional<std::string>(
"runCmd", p.runCmd, j);
8753 JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
8765 IMPLEMENT_JSON_SERIALIZATION()
8784 immediateClose =
true;
8788 static void to_json(nlohmann::json& j,
const ExternalHealthCheckResponder& p)
8791 TOJSON_IMPL(listenPort),
8792 TOJSON_IMPL(immediateClose)
8795 static void from_json(
const nlohmann::json& j, ExternalHealthCheckResponder& p)
8798 getOptional<int>(
"listenPort", p.listenPort, j, 0);
8799 getOptional<bool>(
"immediateClose", p.immediateClose, j,
true);
8804 JSON_SERIALIZED_CLASS(PeeringConfiguration)
8814 IMPLEMENT_JSON_SERIALIZATION()
8844 static void to_json(nlohmann::json& j,
const PeeringConfiguration& p)
8848 TOJSON_IMPL(version),
8849 TOJSON_IMPL(comments),
8853 static void from_json(
const nlohmann::json& j, PeeringConfiguration& p)
8856 getOptional<std::string>(
"id", p.id, j);
8857 getOptional<int>(
"version", p.version, j, 0);
8858 getOptional<std::string>(
"comments", p.comments, j);
8859 getOptional<std::vector<RallypointPeer>>(
"peers", p.peers, j);
8863 JSON_SERIALIZED_CLASS(IgmpSnooping)
8873 IMPLEMENT_JSON_SERIALIZATION()
8896 queryIntervalMs = 125000;
8897 subscriptionTimeoutMs = 0;
8901 static void to_json(nlohmann::json& j,
const IgmpSnooping& p)
8904 TOJSON_IMPL(enabled),
8905 TOJSON_IMPL(queryIntervalMs),
8906 TOJSON_IMPL(subscriptionTimeoutMs)
8909 static void from_json(
const nlohmann::json& j, IgmpSnooping& p)
8912 getOptional<bool>(
"enabled", p.enabled, j);
8913 getOptional<int>(
"queryIntervalMs", p.queryIntervalMs, j, 125000);
8914 getOptional<int>(
"subscriptionTimeoutMs", p.subscriptionTimeoutMs, j, 0);
8919 JSON_SERIALIZED_CLASS(RallypointReflector)
8928 IMPLEMENT_JSON_SERIALIZATION()
8943 } DirectionRestriction_t;
8975 multicastInterfaceName.clear();
8976 additionalTx.clear();
8977 directionRestriction = drNone;
8981 static void to_json(nlohmann::json& j,
const RallypointReflector& p)
8987 TOJSON_IMPL(multicastInterfaceName),
8988 TOJSON_IMPL(additionalTx),
8989 TOJSON_IMPL(directionRestriction)
8992 static void from_json(
const nlohmann::json& j, RallypointReflector& p)
8995 j.at(
"id").get_to(p.id);
8996 j.at(
"rx").get_to(p.rx);
8997 j.at(
"tx").get_to(p.tx);
8998 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
8999 getOptional<std::vector<NetworkAddress>>(
"additionalTx", p.additionalTx, j);
9000 getOptional<RallypointReflector::DirectionRestriction_t>(
"directionRestriction", p.directionRestriction, j, RallypointReflector::DirectionRestriction_t::drNone);
9005 JSON_SERIALIZED_CLASS(RallypointUdpStreamingIpvX)
9014 IMPLEMENT_JSON_SERIALIZATION()
9036 static void to_json(nlohmann::json& j,
const RallypointUdpStreamingIpvX& p)
9039 TOJSON_IMPL(enabled),
9040 TOJSON_IMPL(external)
9043 static void from_json(
const nlohmann::json& j, RallypointUdpStreamingIpvX& p)
9046 getOptional<bool>(
"enabled", p.enabled, j,
true);
9047 getOptional<NetworkAddress>(
"external", p.external, j);
9051 JSON_SERIALIZED_CLASS(RallypointUdpStreaming)
9060 IMPLEMENT_JSON_SERIALIZATION()
9071 ctSharedKeyAes256FullIv = 1,
9074 ctSharedKeyAes256IdxIv = 2,
9077 ctSharedKeyChaCha20FullIv = 3,
9080 ctSharedKeyChaCha20IdxIv = 4
9116 cryptoType = CryptoType_t::ctSharedKeyAes256FullIv;
9120 keepaliveIntervalSecs = 15;
9121 priority = TxPriority_t::priVoice;
9126 static void to_json(nlohmann::json& j,
const RallypointUdpStreaming& p)
9129 TOJSON_IMPL(enabled),
9130 TOJSON_IMPL(cryptoType),
9131 TOJSON_IMPL(listenPort),
9132 TOJSON_IMPL(keepaliveIntervalSecs),
9135 TOJSON_IMPL(priority),
9139 static void from_json(
const nlohmann::json& j, RallypointUdpStreaming& p)
9142 getOptional<bool>(
"enabled", p.enabled, j,
true);
9143 getOptional<RallypointUdpStreaming::CryptoType_t>(
"cryptoType", p.cryptoType, j, RallypointUdpStreaming::CryptoType_t::ctSharedKeyAes256FullIv);
9144 getOptional<int>(
"listenPort", p.listenPort, j, 7444);
9145 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
9146 getOptional<RallypointUdpStreamingIpvX>(
"ipv4", p.ipv4, j);
9147 getOptional<RallypointUdpStreamingIpvX>(
"ipv6", p.ipv6, j);
9148 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
9149 getOptional<int>(
"ttl", p.ttl, j, 64);
9153 JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
9162 IMPLEMENT_JSON_SERIALIZATION()
9207 static void to_json(nlohmann::json& j,
const RallypointRpRtTimingBehavior& p)
9210 TOJSON_IMPL(behavior),
9211 TOJSON_IMPL(atOrAboveMs),
9215 static void from_json(
const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
9218 getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>(
"behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
9219 getOptional<uint32_t>(
"atOrAboveMs", p.atOrAboveMs, j, 0);
9220 getOptional<std::string>(
"runCmd", p.runCmd, j);
9225 JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
9234 IMPLEMENT_JSON_SERIALIZATION()
9262 certificate.clear();
9263 requireClientCertificate =
false;
9268 static void to_json(nlohmann::json& j,
const RallypointWebsocketSettings& p)
9271 TOJSON_IMPL(enabled),
9272 TOJSON_IMPL(listenPort),
9273 TOJSON_IMPL(certificate),
9274 TOJSON_IMPL(requireClientCertificate),
9275 TOJSON_IMPL(requireTls)
9278 static void from_json(
const nlohmann::json& j, RallypointWebsocketSettings& p)
9281 getOptional<bool>(
"enabled", p.enabled, j,
false);
9282 getOptional<int>(
"listenPort", p.listenPort, j, 8443);
9283 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9284 getOptional<bool>(
"requireClientCertificate", p.requireClientCertificate, j,
false);
9285 getOptional<bool>(
"requireTls", p.requireTls, j,
true);
9291 JSON_SERIALIZED_CLASS(RallypointAdvertisingSettings)
9300 IMPLEMENT_JSON_SERIALIZATION()
9331 serviceName =
"_rallypoint._tcp.local.";
9332 interfaceName.clear();
9338 static void to_json(nlohmann::json& j,
const RallypointAdvertisingSettings& p)
9341 TOJSON_IMPL(enabled),
9342 TOJSON_IMPL(hostName),
9343 TOJSON_IMPL(serviceName),
9344 TOJSON_IMPL(interfaceName),
9349 static void from_json(
const nlohmann::json& j, RallypointAdvertisingSettings& p)
9352 getOptional<bool>(
"enabled", p.enabled, j,
false);
9353 getOptional<std::string>(
"hostName", p.hostName, j);
9354 getOptional<std::string>(
"serviceName", p.serviceName, j,
"_rallypoint._tcp.local.");
9355 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
9357 getOptional<int>(
"port", p.port, j, 0);
9358 getOptional<int>(
"ttl", p.ttl, j, 60);
9365 JSON_SERIALIZED_CLASS(NamedIdentity)
9374 IMPLEMENT_JSON_SERIALIZATION()
9392 certificate.clear();
9396 static void to_json(nlohmann::json& j,
const NamedIdentity& p)
9400 TOJSON_IMPL(certificate)
9403 static void from_json(
const nlohmann::json& j, NamedIdentity& p)
9406 getOptional<std::string>(
"name", p.name, j);
9407 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9411 JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
9420 IMPLEMENT_JSON_SERIALIZATION()
9438 restrictions.clear();
9442 static void to_json(nlohmann::json& j,
const RallypointExtendedGroupRestriction& p)
9446 TOJSON_IMPL(restrictions)
9449 static void from_json(
const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
9452 getOptional<std::string>(
"id", p.id, j);
9453 getOptional<std::vector<StringRestrictionList>>(
"restrictions", p.restrictions, j);
9457 JSON_SERIALIZED_CLASS(RtiCloudSettings)
9465 IMPLEMENT_JSON_SERIALIZATION()
9486 enrollmentCode.clear();
9487 serviceBaseUrlPrefix =
"prod.com";
9491 static void to_json(nlohmann::json& j,
const RtiCloudSettings& p)
9494 TOJSON_IMPL(enabled),
9495 TOJSON_IMPL(enrollmentCode),
9496 TOJSON_IMPL(serviceBaseUrlPrefix)
9499 static void from_json(
const nlohmann::json& j, RtiCloudSettings& p)
9502 getOptional<bool>(
"enabled", p.enabled, j,
false);
9503 getOptional<std::string>(
"enrollmentCode", p.enrollmentCode, j);
9504 getOptional<std::string>(
"serviceBaseUrlPrefix", p.serviceBaseUrlPrefix, j,
"prod.com");
9508 JSON_SERIALIZED_CLASS(NsmNodeScripts)
9516 IMPLEMENT_JSON_SERIALIZATION()
9521 std::string beforeGoingActive;
9522 std::string onGoingActive;
9523 std::string beforeActive;
9524 std::string onActive;
9525 std::string inDashboard;
9526 std::string onStatusReport;
9536 beforeGoingActive.clear();
9537 onGoingActive.clear();
9538 beforeActive.clear();
9540 inDashboard.clear();
9541 onStatusReport.clear();
9548 TOJSON_IMPL(onIdle),
9549 TOJSON_IMPL(beforeGoingActive),
9550 TOJSON_IMPL(onGoingActive),
9551 TOJSON_IMPL(beforeActive),
9552 TOJSON_IMPL(onActive),
9553 TOJSON_IMPL(inDashboard),
9554 TOJSON_IMPL(onStatusReport)
9557 static void from_json(
const nlohmann::json& j, NsmNodeScripts& p)
9560 getOptional<std::string>(
"onIdle", p.onIdle, j);
9561 getOptional<std::string>(
"beforeGoingActive", p.beforeGoingActive, j);
9562 getOptional<std::string>(
"onGoingActive", p.onGoingActive, j);
9563 getOptional<std::string>(
"beforeActive", p.beforeActive, j);
9564 getOptional<std::string>(
"onActive", p.onActive, j);
9565 getOptional<std::string>(
"inDashboard", p.inDashboard, j);
9566 getOptional<std::string>(
"onStatusReport", p.onStatusReport, j);
9570 JSON_SERIALIZED_CLASS(NsmNodeLogging)
9578 IMPLEMENT_JSON_SERIALIZATION()
9586 bool logCommandOutput;
9587 bool logResourceStates;
9598 logCommandOutput =
false;
9599 logResourceStates =
false;
9603 static void to_json(nlohmann::json& j,
const NsmNodeLogging& p)
9607 TOJSON_IMPL(dashboard),
9608 TOJSON_IMPL(logCommandOutput),
9609 TOJSON_IMPL(logResourceStates)
9612 static void from_json(
const nlohmann::json& j, NsmNodeLogging& p)
9615 getOptional<int>(
"level", p.level, j, 3);
9616 getOptional<bool>(
"dashboard", p.dashboard, j,
false);
9617 getOptional<bool>(
"logCommandOutput", p.logCommandOutput, j,
false);
9618 getOptional<bool>(
"logResourceStates", p.logResourceStates, j,
false);
9622 JSON_SERIALIZED_CLASS(NsmNodePeriodic)
9630 IMPLEMENT_JSON_SERIALIZATION()
9636 std::string command;
9655 TOJSON_IMPL(intervalSecs),
9656 TOJSON_IMPL(command)
9659 static void from_json(
const nlohmann::json& j, NsmNodePeriodic& p)
9662 getOptional<std::string>(
"id", p.id, j);
9663 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
9664 getOptional<std::string>(
"command", p.command, j);
9668 JSON_SERIALIZED_CLASS(NsmNodeCotLocationPollSettings)
9679 IMPLEMENT_JSON_SERIALIZATION()
9706 static void to_json(nlohmann::json& j,
const NsmNodeCotLocationPollSettings& p)
9709 TOJSON_IMPL(enabled),
9710 TOJSON_IMPL(runCmd),
9711 TOJSON_IMPL(intervalSecs),
9712 TOJSON_IMPL(failClosed)
9715 static void from_json(
const nlohmann::json& j, NsmNodeCotLocationPollSettings& p)
9718 getOptional<bool>(
"enabled", p.enabled, j,
false);
9719 getOptional<std::string>(
"runCmd", p.runCmd, j);
9720 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 10);
9721 getOptional<bool>(
"failClosed", p.failClosed, j,
true);
9725 JSON_SERIALIZED_CLASS(NsmNodeCotSettings)
9733 IMPLEMENT_JSON_SERIALIZATION()
9775 announceWhenIdle =
false;
9776 idleIntervalSecs = 30;
9777 locationPoll.clear();
9781 static void to_json(nlohmann::json& j,
const NsmNodeCotSettings& p)
9784 TOJSON_IMPL(useCot),
9793 TOJSON_IMPL(callsign),
9794 TOJSON_IMPL(detailJson),
9795 TOJSON_IMPL(announceWhenIdle),
9796 TOJSON_IMPL(idleIntervalSecs),
9797 TOJSON_IMPL(locationPoll)
9800 static void from_json(
const nlohmann::json& j, NsmNodeCotSettings& p)
9803 getOptional<bool>(
"useCot", p.useCot, j,
false);
9804 getOptional<std::string>(
"uid", p.uid, j);
9805 getOptional<std::string>(
"type", p.type, j);
9806 getOptional<std::string>(
"how", p.how, j);
9807 getOptional<std::string>(
"lat", p.lat, j);
9808 getOptional<std::string>(
"lon", p.lon, j);
9809 getOptional<std::string>(
"ce", p.ce, j);
9810 getOptional<std::string>(
"hae", p.hae, j);
9811 getOptional<std::string>(
"le", p.le, j);
9812 getOptional<std::string>(
"callsign", p.callsign, j);
9813 getOptional<std::string>(
"detailJson", p.detailJson, j);
9814 getOptional<bool>(
"announceWhenIdle", p.announceWhenIdle, j,
false);
9815 getOptional<int>(
"idleIntervalSecs", p.idleIntervalSecs, j, 30);
9816 getOptional<NsmNodeCotLocationPollSettings>(
"locationPoll", p.locationPoll, j);
9820 JSON_SERIALIZED_CLASS(NsmNodeStatusReportConfiguration)
9832 IMPLEMENT_JSON_SERIALIZATION()
9861 includeResourceDetail =
false;
9866 static void to_json(nlohmann::json& j,
const NsmNodeStatusReportConfiguration& p)
9869 TOJSON_IMPL(fileName),
9870 TOJSON_IMPL(intervalSecs),
9871 TOJSON_IMPL(enabled),
9872 TOJSON_IMPL(includeResourceDetail),
9876 static void from_json(
const nlohmann::json& j, NsmNodeStatusReportConfiguration& p)
9879 getOptional<std::string>(
"fileName", p.fileName, j);
9880 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
9881 getOptional<bool>(
"enabled", p.enabled, j,
false);
9882 getOptional<std::string>(
"runCmd", p.runCmd, j);
9883 getOptional<bool>(
"includeResourceDetail", p.includeResourceDetail, j,
false);
9887 JSON_SERIALIZED_CLASS(NsmNodeElectionGateSettings)
9899 IMPLEMENT_JSON_SERIALIZATION()
9926 static void to_json(nlohmann::json& j,
const NsmNodeElectionGateSettings& p)
9929 TOJSON_IMPL(enabled),
9930 TOJSON_IMPL(runCmd),
9931 TOJSON_IMPL(intervalSecs),
9932 TOJSON_IMPL(failClosed)
9935 static void from_json(
const nlohmann::json& j, NsmNodeElectionGateSettings& p)
9938 getOptional<bool>(
"enabled", p.enabled, j,
false);
9939 getOptional<std::string>(
"runCmd", p.runCmd, j);
9940 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 2);
9941 getOptional<bool>(
"failClosed", p.failClosed, j,
true);
9945 JSON_SERIALIZED_CLASS(NsmNode)
9956 IMPLEMENT_JSON_SERIALIZATION()
9957 IMPLEMENT_JSON_DOCUMENTATION(
NsmNode)
10037 fipsCrypto.clear();
10041 domainName.clear();
10042 multicastInterfaceName.clear();
10043 stateMachine.clear();
10044 defaultPriority = 0;
10046 dashboardToken =
false;
10051 electionGate.clear();
10052 statusReport.clear();
10053 configurationCheckSignalName =
"rts.7b392d1.${id}";
10055 featureset.clear();
10059 ipFamily = IpFamilyType_t::ifIp4;
10063 static void to_json(nlohmann::json& j,
const NsmNode& p)
10065 j = nlohmann::json{
10066 TOJSON_IMPL(fipsCrypto),
10067 TOJSON_IMPL(watchdog),
10070 TOJSON_IMPL(domainName),
10071 TOJSON_IMPL(multicastInterfaceName),
10072 TOJSON_IMPL(stateMachine),
10073 TOJSON_IMPL(defaultPriority),
10074 TOJSON_IMPL(fixedToken),
10075 TOJSON_IMPL(dashboardToken),
10076 TOJSON_IMPL(scripts),
10077 TOJSON_IMPL(logging),
10079 TOJSON_IMPL(periodics),
10080 TOJSON_IMPL(electionGate),
10081 TOJSON_IMPL(statusReport),
10082 TOJSON_IMPL(configurationCheckSignalName),
10083 TOJSON_IMPL(featureset),
10084 TOJSON_IMPL(licensing),
10085 TOJSON_IMPL(ipFamily),
10086 TOJSON_IMPL(rxCapture),
10087 TOJSON_IMPL(txCapture),
10088 TOJSON_IMPL(tuning)
10091 static void from_json(
const nlohmann::json& j, NsmNode& p)
10094 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
10095 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
10096 getOptional<std::string>(
"id", p.id, j);
10097 getOptional<std::string>(
"name", p.name, j);
10098 getOptional<std::string>(
"domainName", p.domainName, j);
10099 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
10100 getOptional<NsmConfiguration>(
"stateMachine", p.stateMachine, j);
10101 getOptional<int>(
"defaultPriority", p.defaultPriority, j, 0);
10102 getOptional<int>(
"fixedToken", p.fixedToken, j, -1);
10103 getOptional<bool>(
"dashboardToken", p.dashboardToken, j,
false);
10104 getOptional<NsmNodeScripts>(
"scripts", p.scripts, j);
10105 getOptional<NsmNodeLogging>(
"logging", p.logging, j);
10106 getOptional<NsmNodeCotSettings>(
"cot", p.cot, j);
10107 getOptional<std::vector<NsmNodePeriodic>>(
"periodics", p.periodics, j);
10108 getOptional<NsmNodeElectionGateSettings>(
"electionGate", p.electionGate, j);
10109 getOptional<NsmNodeStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10110 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
10111 getOptional<Licensing>(
"licensing", p.licensing, j);
10112 getOptional<Featureset>(
"featureset", p.featureset, j);
10113 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
10114 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
10115 getOptional<TuningSettings>(
"tuning", p.tuning, j);
10116 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIp4);
10123 if (!j.contains(key))
10128 const nlohmann::json &nj = j.at(key);
10129 if (!nj.is_object())
10134 if (nj.contains(
"stateMachine") || nj.contains(
"cot") || nj.contains(
"scripts")
10135 || nj.contains(
"periodics") || nj.contains(
"electionGate") || nj.contains(
"statusReport")
10136 || nj.contains(
"multicastInterfaceName"))
10145 JSON_SERIALIZED_CLASS(RallypointServer)
10156 IMPLEMENT_JSON_SERIALIZATION()
10163 sptCertificate = 1,
10164 sptCertPublicKey = 2,
10165 sptCertSubject = 3,
10167 sptCertFingerprint = 5,
10181 } StreamIdPrivacyType_t;
10379 fipsCrypto.clear();
10384 interfaceName.clear();
10385 certificate.clear();
10386 allowMulticastForwarding =
false;
10387 peeringConfiguration.clear();
10388 peeringConfigurationFileName.clear();
10389 peeringConfigurationFileCommand.clear();
10390 peeringConfigurationFileCheckSecs = 60;
10392 statusReport.clear();
10395 externalHealthCheckResponder.clear();
10396 allowPeerForwarding =
false;
10397 multicastInterfaceName.clear();
10400 forwardDiscoveredGroups =
false;
10401 forwardMulticastAddressing =
false;
10402 isMeshLeaf =
false;
10403 disableMessageSigning =
false;
10404 multicastRestrictions.clear();
10405 igmpSnooping.clear();
10406 staticReflectors.clear();
10407 tcpTxOptions.clear();
10408 multicastTxOptions.clear();
10409 certStoreFileName.clear();
10410 certStorePasswordHex.clear();
10411 groupRestrictions.clear();
10412 configurationCheckSignalName =
"rts.7b392d1.${id}";
10414 featureset.clear();
10415 udpStreaming.clear();
10417 normalTaskQueueBias = 0;
10418 enableLeafReflectionReverseSubscription =
false;
10419 disableLoopDetection =
false;
10420 maxSecurityLevel = 0;
10422 streamStatsExport.clear();
10423 maxOutboundPeerConnectionIntervalDeltaSecs = 15;
10424 peerRtTestIntervalMs = 60000;
10425 peerRtBehaviors.clear();
10428 advertising.clear();
10430 extendedGroupRestrictions.clear();
10431 groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
10432 ipFamily = IpFamilyType_t::ifIp4;
10435 domainName.clear();
10436 allowedDomains.clear();
10437 blockedDomains.clear();
10438 extraDomains.clear();
10440 additionalIdentities.clear();
10441 streamIdPrivacyType = StreamIdPrivacyType_t::sptDefault;
10445 static void to_json(nlohmann::json& j,
const RallypointServer& p)
10447 j = nlohmann::json{
10448 TOJSON_IMPL(fipsCrypto),
10449 TOJSON_IMPL(watchdog),
10452 TOJSON_IMPL(listenPort),
10453 TOJSON_IMPL(interfaceName),
10454 TOJSON_IMPL(certificate),
10455 TOJSON_IMPL(allowMulticastForwarding),
10457 TOJSON_IMPL(peeringConfigurationFileName),
10458 TOJSON_IMPL(peeringConfigurationFileCommand),
10459 TOJSON_IMPL(peeringConfigurationFileCheckSecs),
10460 TOJSON_IMPL(ioPools),
10461 TOJSON_IMPL(statusReport),
10462 TOJSON_IMPL(limits),
10463 TOJSON_IMPL(linkGraph),
10464 TOJSON_IMPL(externalHealthCheckResponder),
10465 TOJSON_IMPL(allowPeerForwarding),
10466 TOJSON_IMPL(multicastInterfaceName),
10468 TOJSON_IMPL(discovery),
10469 TOJSON_IMPL(forwardDiscoveredGroups),
10470 TOJSON_IMPL(forwardMulticastAddressing),
10471 TOJSON_IMPL(isMeshLeaf),
10472 TOJSON_IMPL(disableMessageSigning),
10473 TOJSON_IMPL(multicastRestrictions),
10474 TOJSON_IMPL(igmpSnooping),
10475 TOJSON_IMPL(staticReflectors),
10476 TOJSON_IMPL(tcpTxOptions),
10477 TOJSON_IMPL(multicastTxOptions),
10478 TOJSON_IMPL(certStoreFileName),
10479 TOJSON_IMPL(certStorePasswordHex),
10480 TOJSON_IMPL(groupRestrictions),
10481 TOJSON_IMPL(configurationCheckSignalName),
10482 TOJSON_IMPL(featureset),
10483 TOJSON_IMPL(licensing),
10484 TOJSON_IMPL(udpStreaming),
10485 TOJSON_IMPL(sysFlags),
10486 TOJSON_IMPL(normalTaskQueueBias),
10487 TOJSON_IMPL(enableLeafReflectionReverseSubscription),
10488 TOJSON_IMPL(disableLoopDetection),
10489 TOJSON_IMPL(maxSecurityLevel),
10490 TOJSON_IMPL(routeMap),
10491 TOJSON_IMPL(streamStatsExport),
10492 TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
10493 TOJSON_IMPL(peerRtTestIntervalMs),
10494 TOJSON_IMPL(peerRtBehaviors),
10495 TOJSON_IMPL(websocket),
10497 TOJSON_IMPL(advertising),
10498 TOJSON_IMPL(rtiCloud),
10499 TOJSON_IMPL(extendedGroupRestrictions),
10500 TOJSON_IMPL(groupRestrictionAccessPolicyType),
10501 TOJSON_IMPL(ipFamily),
10502 TOJSON_IMPL(rxCapture),
10503 TOJSON_IMPL(txCapture),
10504 TOJSON_IMPL(domainName),
10505 TOJSON_IMPL(allowedDomains),
10506 TOJSON_IMPL(blockedDomains),
10507 TOJSON_IMPL(extraDomains),
10508 TOJSON_IMPL(tuning),
10509 TOJSON_IMPL(additionalIdentities),
10510 TOJSON_IMPL(streamIdPrivacyType)
10513 static void from_json(
const nlohmann::json& j, RallypointServer& p)
10516 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
10517 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
10518 getOptional<std::string>(
"id", p.id, j);
10519 getOptional<std::string>(
"name", p.name, j);
10520 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
10521 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
10522 getOptional<int>(
"listenPort", p.listenPort, j, 7443);
10523 getOptional<bool>(
"allowMulticastForwarding", p.allowMulticastForwarding, j,
false);
10525 getOptional<std::string>(
"peeringConfigurationFileName", p.peeringConfigurationFileName, j);
10526 getOptional<std::string>(
"peeringConfigurationFileCommand", p.peeringConfigurationFileCommand, j);
10527 getOptional<int>(
"peeringConfigurationFileCheckSecs", p.peeringConfigurationFileCheckSecs, j, 60);
10528 getOptional<int>(
"ioPools", p.ioPools, j, -1);
10529 getOptional<RallypointServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10530 getOptional<RallypointServerLimits>(
"limits", p.limits, j);
10531 getOptional<RallypointServerLinkGraph>(
"linkGraph", p.linkGraph, j);
10532 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
10533 getOptional<bool>(
"allowPeerForwarding", p.allowPeerForwarding, j,
false);
10534 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
10535 getOptional<Tls>(
"tls", p.tls, j);
10536 getOptional<DiscoveryConfiguration>(
"discovery", p.discovery, j);
10537 getOptional<bool>(
"forwardDiscoveredGroups", p.forwardDiscoveredGroups, j,
false);
10538 getOptional<bool>(
"forwardMulticastAddressing", p.forwardMulticastAddressing, j,
false);
10539 getOptional<bool>(
"isMeshLeaf", p.isMeshLeaf, j,
false);
10540 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
10541 getOptional<NetworkAddressRestrictionList>(
"multicastRestrictions", p.multicastRestrictions, j);
10542 getOptional<IgmpSnooping>(
"igmpSnooping", p.igmpSnooping, j);
10543 getOptional<std::vector<RallypointReflector>>(
"staticReflectors", p.staticReflectors, j);
10544 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
10545 getOptional<NetworkTxOptions>(
"multicastTxOptions", p.multicastTxOptions, j);
10546 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
10547 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
10548 getOptional<StringRestrictionList>(
"groupRestrictions", p.groupRestrictions, j);
10549 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
10550 getOptional<Licensing>(
"licensing", p.licensing, j);
10551 getOptional<Featureset>(
"featureset", p.featureset, j);
10552 getOptional<RallypointUdpStreaming>(
"udpStreaming", p.udpStreaming, j);
10553 getOptional<uint32_t>(
"sysFlags", p.sysFlags, j, 0);
10554 getOptional<uint32_t>(
"normalTaskQueueBias", p.normalTaskQueueBias, j, 0);
10555 getOptional<bool>(
"enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j,
false);
10556 getOptional<bool>(
"disableLoopDetection", p.disableLoopDetection, j,
false);
10557 getOptional<uint32_t>(
"maxSecurityLevel", p.maxSecurityLevel, j, 0);
10558 getOptional<RallypointServerRouteMap>(
"routeMap", p.routeMap, j);
10559 getOptional<RallypointServerStreamStatsExport>(
"streamStatsExport", p.streamStatsExport, j);
10560 getOptional<uint32_t>(
"maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
10561 getOptional<int>(
"peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
10562 getOptional<std::vector<RallypointRpRtTimingBehavior>>(
"peerRtBehaviors", p.peerRtBehaviors, j);
10563 getOptional<RallypointWebsocketSettings>(
"websocket", p.websocket, j);
10565 getOptional<RallypointAdvertisingSettings>(
"advertising", p.advertising, j);
10566 getOptional<RtiCloudSettings>(
"rtiCloud", p.rtiCloud, j);
10567 getOptional<std::vector<RallypointExtendedGroupRestriction>>(
"extendedGroupRestrictions", p.extendedGroupRestrictions, j);
10568 getOptional<GroupRestrictionAccessPolicyType_t>(
"groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
10569 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIp4);
10570 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
10571 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
10572 getOptional<std::string>(
"domainName", p.domainName, j);
10573 getOptional<std::vector<std::string>>(
"allowedDomains", p.allowedDomains, j);
10574 getOptional<std::vector<std::string>>(
"blockedDomains", p.blockedDomains, j);
10575 getOptional<std::vector<std::string>>(
"extraDomains", p.extraDomains, j);
10576 getOptional<TuningSettings>(
"tuning", p.tuning, j);
10577 getOptional<std::vector<NamedIdentity>>(
"additionalIdentities", p.additionalIdentities, j);
10578 getOptional<RallypointServer::StreamIdPrivacyType_t>(
"streamIdPrivacyType", p.streamIdPrivacyType, j, RallypointServer::StreamIdPrivacyType_t::sptDefault);
10583 JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
10595 IMPLEMENT_JSON_SERIALIZATION()
10630 configurationVersion = 0;
10634 static void to_json(nlohmann::json& j,
const PlatformDiscoveredService& p)
10636 j = nlohmann::json{
10640 TOJSON_IMPL(address),
10642 TOJSON_IMPL(configurationVersion)
10645 static void from_json(
const nlohmann::json& j, PlatformDiscoveredService& p)
10648 getOptional<std::string>(
"id", p.id, j);
10649 getOptional<std::string>(
"type", p.type, j);
10650 getOptional<std::string>(
"name", p.name, j);
10651 getOptional<NetworkAddress>(
"address", p.address, j);
10652 getOptional<std::string>(
"uri", p.uri, j);
10653 getOptional<uint32_t>(
"configurationVersion", p.configurationVersion, j, 0);
10693 IMPLEMENT_JSON_SERIALIZATION()
10739 mostRecentFirst =
true;
10740 startedOnOrAfter = 0;
10741 endedOnOrBefore = 0;
10744 onlyCommitted =
true;
10746 onlyNodeId.clear();
10752 static void to_json(nlohmann::json& j,
const TimelineQueryParameters& p)
10754 j = nlohmann::json{
10755 TOJSON_IMPL(maxCount),
10756 TOJSON_IMPL(mostRecentFirst),
10757 TOJSON_IMPL(startedOnOrAfter),
10758 TOJSON_IMPL(endedOnOrBefore),
10759 TOJSON_IMPL(onlyDirection),
10760 TOJSON_IMPL(onlyType),
10761 TOJSON_IMPL(onlyCommitted),
10762 TOJSON_IMPL(onlyAlias),
10763 TOJSON_IMPL(onlyNodeId),
10764 TOJSON_IMPL(onlyTxId),
10768 static void from_json(
const nlohmann::json& j, TimelineQueryParameters& p)
10771 getOptional<long>(
"maxCount", p.maxCount, j, 50);
10772 getOptional<bool>(
"mostRecentFirst", p.mostRecentFirst, j,
false);
10773 getOptional<uint64_t>(
"startedOnOrAfter", p.startedOnOrAfter, j, 0);
10774 getOptional<uint64_t>(
"endedOnOrBefore", p.endedOnOrBefore, j, 0);
10775 getOptional<int>(
"onlyDirection", p.onlyDirection, j, 0);
10776 getOptional<int>(
"onlyType", p.onlyType, j, 0);
10777 getOptional<bool>(
"onlyCommitted", p.onlyCommitted, j,
true);
10778 getOptional<std::string>(
"onlyAlias", p.onlyAlias, j, EMPTY_STRING);
10779 getOptional<std::string>(
"onlyNodeId", p.onlyNodeId, j, EMPTY_STRING);
10780 getOptional<int>(
"onlyTxId", p.onlyTxId, j, 0);
10781 getOptional<std::string>(
"sql", p.sql, j, EMPTY_STRING);
10785 JSON_SERIALIZED_CLASS(CertStoreCertificate)
10794 IMPLEMENT_JSON_SERIALIZATION()
10821 certificatePem.clear();
10822 privateKeyPem.clear();
10823 internalData =
nullptr;
10828 static void to_json(nlohmann::json& j,
const CertStoreCertificate& p)
10830 j = nlohmann::json{
10832 TOJSON_IMPL(certificatePem),
10833 TOJSON_IMPL(privateKeyPem),
10837 static void from_json(
const nlohmann::json& j, CertStoreCertificate& p)
10840 j.at(
"id").get_to(p.id);
10841 j.at(
"certificatePem").get_to(p.certificatePem);
10842 getOptional<std::string>(
"privateKeyPem", p.privateKeyPem, j, EMPTY_STRING);
10843 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
10847 JSON_SERIALIZED_CLASS(CertStore)
10856 IMPLEMENT_JSON_SERIALIZATION()
10857 IMPLEMENT_JSON_DOCUMENTATION(
CertStore)
10877 certificates.clear();
10882 static void to_json(nlohmann::json& j,
const CertStore& p)
10884 j = nlohmann::json{
10886 TOJSON_IMPL(certificates),
10890 static void from_json(
const nlohmann::json& j, CertStore& p)
10893 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10894 getOptional<std::vector<CertStoreCertificate>>(
"certificates", p.certificates, j);
10895 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
10899 JSON_SERIALIZED_CLASS(CertStoreCertificateElement)
10908 IMPLEMENT_JSON_SERIALIZATION()
10932 hasPrivateKey =
false;
10937 static void to_json(nlohmann::json& j,
const CertStoreCertificateElement& p)
10939 j = nlohmann::json{
10941 TOJSON_IMPL(hasPrivateKey),
10945 if(!p.certificatePem.empty())
10947 j[
"certificatePem"] = p.certificatePem;
10950 static void from_json(
const nlohmann::json& j, CertStoreCertificateElement& p)
10953 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10954 getOptional<bool>(
"hasPrivateKey", p.hasPrivateKey, j,
false);
10955 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
10956 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
10960 JSON_SERIALIZED_CLASS(CertStoreDescriptor)
10969 IMPLEMENT_JSON_SERIALIZATION()
11002 certificates.clear();
11007 static void to_json(nlohmann::json& j,
const CertStoreDescriptor& p)
11009 j = nlohmann::json{
11011 TOJSON_IMPL(fileName),
11012 TOJSON_IMPL(version),
11013 TOJSON_IMPL(flags),
11014 TOJSON_IMPL(certificates),
11018 static void from_json(
const nlohmann::json& j, CertStoreDescriptor& p)
11021 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11022 getOptional<std::string>(
"fileName", p.fileName, j, EMPTY_STRING);
11023 getOptional<int>(
"version", p.version, j, 0);
11024 getOptional<int>(
"flags", p.flags, j, 0);
11025 getOptional<std::vector<CertStoreCertificateElement>>(
"certificates", p.certificates, j);
11026 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
11030 JSON_SERIALIZED_CLASS(CertificateSubjectElement)
11039 IMPLEMENT_JSON_SERIALIZATION()
11061 static void to_json(nlohmann::json& j,
const CertificateSubjectElement& p)
11063 j = nlohmann::json{
11068 static void from_json(
const nlohmann::json& j, CertificateSubjectElement& p)
11071 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
11072 getOptional<std::string>(
"value", p.value, j, EMPTY_STRING);
11077 JSON_SERIALIZED_CLASS(CertificateDescriptor)
11086 IMPLEMENT_JSON_SERIALIZATION()
11135 selfSigned =
false;
11140 fingerprint.clear();
11141 subjectElements.clear();
11142 issuerElements.clear();
11143 certificatePem.clear();
11144 publicKeyPem.clear();
11148 static void to_json(nlohmann::json& j,
const CertificateDescriptor& p)
11150 j = nlohmann::json{
11151 TOJSON_IMPL(subject),
11152 TOJSON_IMPL(issuer),
11153 TOJSON_IMPL(selfSigned),
11154 TOJSON_IMPL(version),
11155 TOJSON_IMPL(notBefore),
11156 TOJSON_IMPL(notAfter),
11157 TOJSON_IMPL(serial),
11158 TOJSON_IMPL(fingerprint),
11159 TOJSON_IMPL(subjectElements),
11160 TOJSON_IMPL(issuerElements),
11161 TOJSON_IMPL(certificatePem),
11162 TOJSON_IMPL(publicKeyPem)
11165 static void from_json(
const nlohmann::json& j, CertificateDescriptor& p)
11168 getOptional<std::string>(
"subject", p.subject, j, EMPTY_STRING);
11169 getOptional<std::string>(
"issuer", p.issuer, j, EMPTY_STRING);
11170 getOptional<bool>(
"selfSigned", p.selfSigned, j,
false);
11171 getOptional<int>(
"version", p.version, j, 0);
11172 getOptional<std::string>(
"notBefore", p.notBefore, j, EMPTY_STRING);
11173 getOptional<std::string>(
"notAfter", p.notAfter, j, EMPTY_STRING);
11174 getOptional<std::string>(
"serial", p.serial, j, EMPTY_STRING);
11175 getOptional<std::string>(
"fingerprint", p.fingerprint, j, EMPTY_STRING);
11176 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
11177 getOptional<std::string>(
"publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
11178 getOptional<std::vector<CertificateSubjectElement>>(
"subjectElements", p.subjectElements, j);
11179 getOptional<std::vector<CertificateSubjectElement>>(
"issuerElements", p.issuerElements, j);
11184 JSON_SERIALIZED_CLASS(RiffDescriptor)
11196 IMPLEMENT_JSON_SERIALIZATION()
11237 certDescriptor.clear();
11242 static void to_json(nlohmann::json& j,
const RiffDescriptor& p)
11244 j = nlohmann::json{
11246 TOJSON_IMPL(verified),
11247 TOJSON_IMPL(channels),
11248 TOJSON_IMPL(sampleCount),
11250 TOJSON_IMPL(certPem),
11251 TOJSON_IMPL(certDescriptor),
11252 TOJSON_IMPL(signature)
11256 static void from_json(
const nlohmann::json& j, RiffDescriptor& p)
11259 FROMJSON_IMPL(file, std::string, EMPTY_STRING);
11260 FROMJSON_IMPL(verified,
bool,
false);
11261 FROMJSON_IMPL(channels,
int, 0);
11262 FROMJSON_IMPL(sampleCount,
int, 0);
11263 FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
11264 FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
11265 getOptional<CertificateDescriptor>(
"certDescriptor", p.certDescriptor, j);
11266 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
11271 JSON_SERIALIZED_CLASS(BridgeCreationDetail)
11280 IMPLEMENT_JSON_SERIALIZATION()
11298 csAlreadyExists = -3,
11301 csInvalidConfiguration = -4,
11304 csInvalidJson = -5,
11307 csInsufficientGroups = -6,
11310 csTooManyGroups = -7,
11313 csDuplicateGroup = -8,
11316 csLocalLoopDetected = -9,
11317 } CreationStatus_t;
11333 status = csUndefined;
11337 static void to_json(nlohmann::json& j,
const BridgeCreationDetail& p)
11339 j = nlohmann::json{
11341 TOJSON_IMPL(status)
11344 static void from_json(
const nlohmann::json& j, BridgeCreationDetail& p)
11347 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11348 getOptional<BridgeCreationDetail::CreationStatus_t>(
"status", p.status, j, BridgeCreationDetail::CreationStatus_t::csUndefined);
11351 JSON_SERIALIZED_CLASS(GroupConnectionDetail)
11360 IMPLEMENT_JSON_SERIALIZATION()
11372 ctDirectDatagram = 1,
11376 } ConnectionType_t;
11401 connectionType = ctUndefined;
11403 asFailover =
false;
11408 static void to_json(nlohmann::json& j,
const GroupConnectionDetail& p)
11410 j = nlohmann::json{
11412 TOJSON_IMPL(connectionType),
11414 TOJSON_IMPL(asFailover),
11415 TOJSON_IMPL(reason)
11420 j[
"asFailover"] = p.asFailover;
11423 static void from_json(
const nlohmann::json& j, GroupConnectionDetail& p)
11426 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11427 getOptional<GroupConnectionDetail::ConnectionType_t>(
"connectionType", p.connectionType, j, GroupConnectionDetail::ConnectionType_t::ctUndefined);
11428 getOptional<std::string>(
"peer", p.peer, j, EMPTY_STRING);
11429 getOptional<bool>(
"asFailover", p.asFailover, j,
false);
11430 getOptional<std::string>(
"reason", p.reason, j, EMPTY_STRING);
11434 JSON_SERIALIZED_CLASS(GroupTxDetail)
11443 IMPLEMENT_JSON_SERIALIZATION()
11461 txsNotAnAudioGroup = -1,
11467 txsNotConnected = -3,
11470 txsAlreadyTransmitting = -4,
11473 txsInvalidParams = -5,
11476 txsPriorityTooLow = -6,
11479 txsRxActiveOnNonFdx = -7,
11482 txsCannotSubscribeToInput = -8,
11488 txsTxEndedWithFailure = -10,
11491 txsBridgedButNotMultistream = -11,
11494 txsAutoEndedDueToNonMultistreamBridge = -12,
11497 txsReBeginWithoutPriorBegin = -13
11526 status = txsUndefined;
11528 remotePriority = 0;
11529 nonFdxMsHangRemaining = 0;
11534 static void to_json(nlohmann::json& j,
const GroupTxDetail& p)
11536 j = nlohmann::json{
11538 TOJSON_IMPL(status),
11539 TOJSON_IMPL(localPriority),
11544 if(p.status == GroupTxDetail::TxStatus_t::txsPriorityTooLow)
11546 j[
"remotePriority"] = p.remotePriority;
11548 else if(p.status == GroupTxDetail::TxStatus_t::txsRxActiveOnNonFdx)
11550 j[
"nonFdxMsHangRemaining"] = p.nonFdxMsHangRemaining;
11553 static void from_json(
const nlohmann::json& j, GroupTxDetail& p)
11556 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11557 getOptional<GroupTxDetail::TxStatus_t>(
"status", p.status, j, GroupTxDetail::TxStatus_t::txsUndefined);
11558 getOptional<int>(
"localPriority", p.localPriority, j, 0);
11559 getOptional<int>(
"remotePriority", p.remotePriority, j, 0);
11560 getOptional<long>(
"nonFdxMsHangRemaining", p.nonFdxMsHangRemaining, j, 0);
11561 getOptional<uint32_t>(
"txId", p.txId, j, 0);
11565 JSON_SERIALIZED_CLASS(GroupCreationDetail)
11574 IMPLEMENT_JSON_SERIALIZATION()
11592 csConflictingRpListAndCluster = -2,
11595 csAlreadyExists = -3,
11598 csInvalidConfiguration = -4,
11601 csInvalidJson = -5,
11604 csCryptoFailure = -6,
11607 csAudioInputFailure = -7,
11610 csAudioOutputFailure = -8,
11613 csUnsupportedAudioEncoder = -9,
11619 csInvalidTransport = -11,
11622 csAudioInputDeviceNotFound = -12,
11625 csAudioOutputDeviceNotFound = -13
11626 } CreationStatus_t;
11642 status = csUndefined;
11646 static void to_json(nlohmann::json& j,
const GroupCreationDetail& p)
11648 j = nlohmann::json{
11650 TOJSON_IMPL(status)
11653 static void from_json(
const nlohmann::json& j, GroupCreationDetail& p)
11656 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11657 getOptional<GroupCreationDetail::CreationStatus_t>(
"status", p.status, j, GroupCreationDetail::CreationStatus_t::csUndefined);
11662 JSON_SERIALIZED_CLASS(GroupReconfigurationDetail)
11671 IMPLEMENT_JSON_SERIALIZATION()
11689 rsInvalidConfiguration = -2,
11692 rsInvalidJson = -3,
11695 rsAudioInputFailure = -4,
11698 rsAudioOutputFailure = -5,
11701 rsDoesNotExist = -6,
11704 rsAudioInputInUse = -7,
11707 rsAudioDisabledForGroup = -8,
11710 rsGroupIsNotAudio = -9
11711 } ReconfigurationStatus_t;
11727 status = rsUndefined;
11731 static void to_json(nlohmann::json& j,
const GroupReconfigurationDetail& p)
11733 j = nlohmann::json{
11735 TOJSON_IMPL(status)
11738 static void from_json(
const nlohmann::json& j, GroupReconfigurationDetail& p)
11741 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11742 getOptional<GroupReconfigurationDetail::ReconfigurationStatus_t>(
"status", p.status, j, GroupReconfigurationDetail::ReconfigurationStatus_t::rsUndefined);
11747 JSON_SERIALIZED_CLASS(GroupHealthReport)
11756 IMPLEMENT_JSON_SERIALIZATION()
11762 uint64_t lastErrorTs;
11763 uint64_t decryptionErrors;
11764 uint64_t encryptionErrors;
11765 uint64_t unsupportDecoderErrors;
11766 uint64_t decoderFailures;
11767 uint64_t decoderStartFailures;
11768 uint64_t inboundRtpPacketAllocationFailures;
11769 uint64_t inboundRtpPacketLoadFailures;
11770 uint64_t latePacketsDiscarded;
11771 uint64_t jitterBufferInsertionFailures;
11772 uint64_t presenceDeserializationFailures;
11773 uint64_t notRtpErrors;
11774 uint64_t generalErrors;
11775 uint64_t inboundRtpProcessorAllocationFailures;
11786 decryptionErrors = 0;
11787 encryptionErrors = 0;
11788 unsupportDecoderErrors = 0;
11789 decoderFailures = 0;
11790 decoderStartFailures = 0;
11791 inboundRtpPacketAllocationFailures = 0;
11792 inboundRtpPacketLoadFailures = 0;
11793 latePacketsDiscarded = 0;
11794 jitterBufferInsertionFailures = 0;
11795 presenceDeserializationFailures = 0;
11798 inboundRtpProcessorAllocationFailures = 0;
11804 j = nlohmann::json{
11806 TOJSON_IMPL(lastErrorTs),
11807 TOJSON_IMPL(decryptionErrors),
11808 TOJSON_IMPL(encryptionErrors),
11809 TOJSON_IMPL(unsupportDecoderErrors),
11810 TOJSON_IMPL(decoderFailures),
11811 TOJSON_IMPL(decoderStartFailures),
11812 TOJSON_IMPL(inboundRtpPacketAllocationFailures),
11813 TOJSON_IMPL(inboundRtpPacketLoadFailures),
11814 TOJSON_IMPL(latePacketsDiscarded),
11815 TOJSON_IMPL(jitterBufferInsertionFailures),
11816 TOJSON_IMPL(presenceDeserializationFailures),
11817 TOJSON_IMPL(notRtpErrors),
11818 TOJSON_IMPL(generalErrors),
11819 TOJSON_IMPL(inboundRtpProcessorAllocationFailures)
11822 static void from_json(
const nlohmann::json& j, GroupHealthReport& p)
11825 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11826 getOptional<uint64_t>(
"lastErrorTs", p.lastErrorTs, j, 0);
11827 getOptional<uint64_t>(
"decryptionErrors", p.decryptionErrors, j, 0);
11828 getOptional<uint64_t>(
"encryptionErrors", p.encryptionErrors, j, 0);
11829 getOptional<uint64_t>(
"unsupportDecoderErrors", p.unsupportDecoderErrors, j, 0);
11830 getOptional<uint64_t>(
"decoderFailures", p.decoderFailures, j, 0);
11831 getOptional<uint64_t>(
"decoderStartFailures", p.decoderStartFailures, j, 0);
11832 getOptional<uint64_t>(
"inboundRtpPacketAllocationFailures", p.inboundRtpPacketAllocationFailures, j, 0);
11833 getOptional<uint64_t>(
"inboundRtpPacketLoadFailures", p.inboundRtpPacketLoadFailures, j, 0);
11834 getOptional<uint64_t>(
"latePacketsDiscarded", p.latePacketsDiscarded, j, 0);
11835 getOptional<uint64_t>(
"jitterBufferInsertionFailures", p.jitterBufferInsertionFailures, j, 0);
11836 getOptional<uint64_t>(
"presenceDeserializationFailures", p.presenceDeserializationFailures, j, 0);
11837 getOptional<uint64_t>(
"notRtpErrors", p.notRtpErrors, j, 0);
11838 getOptional<uint64_t>(
"generalErrors", p.generalErrors, j, 0);
11839 getOptional<uint64_t>(
"inboundRtpProcessorAllocationFailures", p.inboundRtpProcessorAllocationFailures, j, 0);
11843 JSON_SERIALIZED_CLASS(InboundProcessorStats)
11852 IMPLEMENT_JSON_SERIALIZATION()
11859 uint64_t minRtpSamplesInQueue;
11860 uint64_t maxRtpSamplesInQueue;
11861 uint64_t totalSamplesTrimmed;
11862 uint64_t underruns;
11864 uint64_t samplesInQueue;
11865 uint64_t totalPacketsReceived;
11866 uint64_t totalPacketsLost;
11867 uint64_t totalPacketsDiscarded;
11878 minRtpSamplesInQueue = 0;
11879 maxRtpSamplesInQueue = 0;
11880 totalSamplesTrimmed = 0;
11883 samplesInQueue = 0;
11884 totalPacketsReceived = 0;
11885 totalPacketsLost = 0;
11886 totalPacketsDiscarded = 0;
11892 j = nlohmann::json{
11894 TOJSON_IMPL(jitter),
11895 TOJSON_IMPL(minRtpSamplesInQueue),
11896 TOJSON_IMPL(maxRtpSamplesInQueue),
11897 TOJSON_IMPL(totalSamplesTrimmed),
11898 TOJSON_IMPL(underruns),
11899 TOJSON_IMPL(overruns),
11900 TOJSON_IMPL(samplesInQueue),
11901 TOJSON_IMPL(totalPacketsReceived),
11902 TOJSON_IMPL(totalPacketsLost),
11903 TOJSON_IMPL(totalPacketsDiscarded)
11906 static void from_json(
const nlohmann::json& j, InboundProcessorStats& p)
11909 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
11910 getOptional<double>(
"jitter", p.jitter, j, 0.0);
11911 getOptional<uint64_t>(
"minRtpSamplesInQueue", p.minRtpSamplesInQueue, j, 0);
11912 getOptional<uint64_t>(
"maxRtpSamplesInQueue", p.maxRtpSamplesInQueue, j, 0);
11913 getOptional<uint64_t>(
"totalSamplesTrimmed", p.totalSamplesTrimmed, j, 0);
11914 getOptional<uint64_t>(
"underruns", p.underruns, j, 0);
11915 getOptional<uint64_t>(
"overruns", p.overruns, j, 0);
11916 getOptional<uint64_t>(
"samplesInQueue", p.samplesInQueue, j, 0);
11917 getOptional<uint64_t>(
"totalPacketsReceived", p.totalPacketsReceived, j, 0);
11918 getOptional<uint64_t>(
"totalPacketsLost", p.totalPacketsLost, j, 0);
11919 getOptional<uint64_t>(
"totalPacketsDiscarded", p.totalPacketsDiscarded, j, 0);
11923 JSON_SERIALIZED_CLASS(TrafficCounter)
11932 IMPLEMENT_JSON_SERIALIZATION()
11956 j = nlohmann::json{
11957 TOJSON_IMPL(packets),
11958 TOJSON_IMPL(bytes),
11959 TOJSON_IMPL(errors)
11962 static void from_json(
const nlohmann::json& j, TrafficCounter& p)
11965 getOptional<uint64_t>(
"packets", p.packets, j, 0);
11966 getOptional<uint64_t>(
"bytes", p.bytes, j, 0);
11967 getOptional<uint64_t>(
"errors", p.errors, j, 0);
11971 JSON_SERIALIZED_CLASS(GroupStats)
11980 IMPLEMENT_JSON_SERIALIZATION()
11981 IMPLEMENT_WRAPPED_JSON_SERIALIZATION(
GroupStats)
12004 static void to_json(nlohmann::json& j,
const GroupStats& p)
12006 j = nlohmann::json{
12009 TOJSON_IMPL(rxTraffic),
12010 TOJSON_IMPL(txTraffic)
12013 static void from_json(
const nlohmann::json& j, GroupStats& p)
12016 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
12018 getOptional<TrafficCounter>(
"rxTraffic", p.rxTraffic, j);
12019 getOptional<TrafficCounter>(
"txTraffic", p.txTraffic, j);
12023 JSON_SERIALIZED_CLASS(RallypointConnectionDetail)
12032 IMPLEMENT_JSON_SERIALIZATION()
12059 internalId.clear();
12062 msToNextConnectionAttempt = 0;
12063 serverProcessingMs = -1.0f;
12067 static void to_json(nlohmann::json& j,
const RallypointConnectionDetail& p)
12069 j = nlohmann::json{
12070 TOJSON_IMPL(internalId),
12075 if(p.msToNextConnectionAttempt > 0)
12077 j[
"msToNextConnectionAttempt"] = p.msToNextConnectionAttempt;
12080 if(p.serverProcessingMs >= 0.0)
12082 j[
"serverProcessingMs"] = p.serverProcessingMs;
12085 static void from_json(
const nlohmann::json& j, RallypointConnectionDetail& p)
12088 getOptional<std::string>(
"internalId", p.internalId, j, EMPTY_STRING);
12089 getOptional<std::string>(
"host", p.host, j, EMPTY_STRING);
12090 getOptional<int>(
"port", p.port, j, 0);
12091 getOptional<uint64_t>(
"msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
12092 getOptional<float>(
"serverProcessingMs", p.serverProcessingMs, j, -1.0);
12096 JSON_SERIALIZED_CLASS(TranslationSession)
12108 IMPLEMENT_JSON_SERIALIZATION()
12138 static void to_json(nlohmann::json& j,
const TranslationSession& p)
12140 j = nlohmann::json{
12143 TOJSON_IMPL(groups),
12144 TOJSON_IMPL(enabled)
12147 static void from_json(
const nlohmann::json& j, TranslationSession& p)
12150 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
12151 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
12152 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
12153 FROMJSON_IMPL(enabled,
bool,
true);
12157 JSON_SERIALIZED_CLASS(TranslationConfiguration)
12169 IMPLEMENT_JSON_SERIALIZATION()
12191 static void to_json(nlohmann::json& j,
const TranslationConfiguration& p)
12193 j = nlohmann::json{
12194 TOJSON_IMPL(sessions),
12195 TOJSON_IMPL(groups)
12198 static void from_json(
const nlohmann::json& j, TranslationConfiguration& p)
12201 getOptional<std::vector<TranslationSession>>(
"sessions", p.sessions, j);
12202 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12206 JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
12218 IMPLEMENT_JSON_SERIALIZATION()
12253 includeGroupDetail =
false;
12254 includeSessionDetail =
false;
12255 includeSessionGroupDetail =
false;
12260 static void to_json(nlohmann::json& j,
const LingoServerStatusReportConfiguration& p)
12262 j = nlohmann::json{
12263 TOJSON_IMPL(fileName),
12264 TOJSON_IMPL(intervalSecs),
12265 TOJSON_IMPL(enabled),
12266 TOJSON_IMPL(includeGroupDetail),
12267 TOJSON_IMPL(includeSessionDetail),
12268 TOJSON_IMPL(includeSessionGroupDetail),
12269 TOJSON_IMPL(runCmd)
12272 static void from_json(
const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
12275 getOptional<std::string>(
"fileName", p.fileName, j);
12276 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12277 getOptional<bool>(
"enabled", p.enabled, j,
false);
12278 getOptional<std::string>(
"runCmd", p.runCmd, j);
12279 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12280 getOptional<bool>(
"includeSessionDetail", p.includeSessionDetail, j,
false);
12281 getOptional<bool>(
"includeSessionGroupDetail", p.includeSessionGroupDetail, j,
false);
12285 JSON_SERIALIZED_CLASS(LingoServerInternals)
12299 IMPLEMENT_JSON_SERIALIZATION()
12321 housekeeperIntervalMs = 1000;
12325 static void to_json(nlohmann::json& j,
const LingoServerInternals& p)
12327 j = nlohmann::json{
12328 TOJSON_IMPL(watchdog),
12329 TOJSON_IMPL(housekeeperIntervalMs),
12330 TOJSON_IMPL(tuning)
12333 static void from_json(
const nlohmann::json& j, LingoServerInternals& p)
12336 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12337 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12338 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12342 JSON_SERIALIZED_CLASS(LingoServerConfiguration)
12353 IMPLEMENT_JSON_SERIALIZATION()
12410 serviceConfigurationFileCheckSecs = 60;
12411 lingoConfigurationFileName.clear();
12412 lingoConfigurationFileCommand.clear();
12413 lingoConfigurationFileCheckSecs = 60;
12414 statusReport.clear();
12415 externalHealthCheckResponder.clear();
12417 certStoreFileName.clear();
12418 certStorePasswordHex.clear();
12419 enginePolicy.clear();
12420 configurationCheckSignalName =
"rts.22f4ec3.${id}";
12421 fipsCrypto.clear();
12427 static void to_json(nlohmann::json& j,
const LingoServerConfiguration& p)
12429 j = nlohmann::json{
12431 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12432 TOJSON_IMPL(lingoConfigurationFileName),
12433 TOJSON_IMPL(lingoConfigurationFileCommand),
12434 TOJSON_IMPL(lingoConfigurationFileCheckSecs),
12435 TOJSON_IMPL(statusReport),
12436 TOJSON_IMPL(externalHealthCheckResponder),
12437 TOJSON_IMPL(internals),
12438 TOJSON_IMPL(certStoreFileName),
12439 TOJSON_IMPL(certStorePasswordHex),
12440 TOJSON_IMPL(enginePolicy),
12441 TOJSON_IMPL(configurationCheckSignalName),
12442 TOJSON_IMPL(fipsCrypto),
12443 TOJSON_IMPL(proxy),
12447 static void from_json(
const nlohmann::json& j, LingoServerConfiguration& p)
12450 getOptional<std::string>(
"id", p.id, j);
12451 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12452 getOptional<std::string>(
"lingoConfigurationFileName", p.lingoConfigurationFileName, j);
12453 getOptional<std::string>(
"lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
12454 getOptional<int>(
"lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
12455 getOptional<LingoServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12456 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12457 getOptional<LingoServerInternals>(
"internals", p.internals, j);
12458 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12459 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12460 j.at(
"enginePolicy").get_to(p.enginePolicy);
12461 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.22f4ec3.${id}");
12462 getOptional<FipsCryptoSettings>(
"fipsCrypo", p.fipsCrypto, j);
12463 getOptional<NetworkAddress>(
"proxy", p.proxy, j);
12469 JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
12481 IMPLEMENT_JSON_SERIALIZATION()
12511 static void to_json(nlohmann::json& j,
const VoiceToVoiceSession& p)
12513 j = nlohmann::json{
12516 TOJSON_IMPL(groups),
12517 TOJSON_IMPL(enabled)
12520 static void from_json(
const nlohmann::json& j, VoiceToVoiceSession& p)
12523 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
12524 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
12525 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
12526 FROMJSON_IMPL(enabled,
bool,
true);
12530 JSON_SERIALIZED_CLASS(LingoConfiguration)
12542 IMPLEMENT_JSON_SERIALIZATION()
12559 voiceToVoiceSessions.clear();
12564 static void to_json(nlohmann::json& j,
const LingoConfiguration& p)
12566 j = nlohmann::json{
12567 TOJSON_IMPL(voiceToVoiceSessions),
12568 TOJSON_IMPL(groups)
12571 static void from_json(
const nlohmann::json& j, LingoConfiguration& p)
12574 getOptional<std::vector<VoiceToVoiceSession>>(
"voiceToVoiceSessions", p.voiceToVoiceSessions, j);
12575 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12579 JSON_SERIALIZED_CLASS(BridgingConfiguration)
12591 IMPLEMENT_JSON_SERIALIZATION()
12613 static void to_json(nlohmann::json& j,
const BridgingConfiguration& p)
12615 j = nlohmann::json{
12616 TOJSON_IMPL(bridges),
12617 TOJSON_IMPL(groups)
12620 static void from_json(
const nlohmann::json& j, BridgingConfiguration& p)
12623 getOptional<std::vector<Bridge>>(
"bridges", p.bridges, j);
12624 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12628 JSON_SERIALIZED_CLASS(BridgingServerStatusReportConfiguration)
12640 IMPLEMENT_JSON_SERIALIZATION()
12675 includeGroupDetail =
false;
12676 includeBridgeDetail =
false;
12677 includeBridgeGroupDetail =
false;
12682 static void to_json(nlohmann::json& j,
const BridgingServerStatusReportConfiguration& p)
12684 j = nlohmann::json{
12685 TOJSON_IMPL(fileName),
12686 TOJSON_IMPL(intervalSecs),
12687 TOJSON_IMPL(enabled),
12688 TOJSON_IMPL(includeGroupDetail),
12689 TOJSON_IMPL(includeBridgeDetail),
12690 TOJSON_IMPL(includeBridgeGroupDetail),
12691 TOJSON_IMPL(runCmd)
12694 static void from_json(
const nlohmann::json& j, BridgingServerStatusReportConfiguration& p)
12697 getOptional<std::string>(
"fileName", p.fileName, j);
12698 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12699 getOptional<bool>(
"enabled", p.enabled, j,
false);
12700 getOptional<std::string>(
"runCmd", p.runCmd, j);
12701 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12702 getOptional<bool>(
"includeBridgeDetail", p.includeBridgeDetail, j,
false);
12703 getOptional<bool>(
"includeBridgeGroupDetail", p.includeBridgeGroupDetail, j,
false);
12707 JSON_SERIALIZED_CLASS(BridgingServerInternals)
12721 IMPLEMENT_JSON_SERIALIZATION()
12749 housekeeperIntervalMs = 1000;
12750 nsmUnhealthyBridgeGraceMs = 5000;
12751 nsmResourceReleaseCooldownMs = 30000;
12755 static void to_json(nlohmann::json& j,
const BridgingServerInternals& p)
12757 j = nlohmann::json{
12758 TOJSON_IMPL(watchdog),
12759 TOJSON_IMPL(housekeeperIntervalMs),
12760 TOJSON_IMPL(nsmUnhealthyBridgeGraceMs),
12761 TOJSON_IMPL(nsmResourceReleaseCooldownMs),
12762 TOJSON_IMPL(tuning)
12765 static void from_json(
const nlohmann::json& j, BridgingServerInternals& p)
12768 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12769 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12770 getOptional<int>(
"nsmUnhealthyBridgeGraceMs", p.nsmUnhealthyBridgeGraceMs, j, 5000);
12771 getOptional<int>(
"nsmResourceReleaseCooldownMs", p.nsmResourceReleaseCooldownMs, j, 30000);
12772 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12776 JSON_SERIALIZED_CLASS(BridgingServerConfiguration)
12787 IMPLEMENT_JSON_SERIALIZATION()
12811 omADictatedByGroup = 3,
12871 serviceConfigurationFileCheckSecs = 60;
12872 bridgingConfigurationFileName.clear();
12873 bridgingConfigurationFileCommand.clear();
12874 bridgingConfigurationFileCheckSecs = 60;
12875 statusReport.clear();
12876 externalHealthCheckResponder.clear();
12878 certStoreFileName.clear();
12879 certStorePasswordHex.clear();
12880 enginePolicy.clear();
12881 configurationCheckSignalName =
"rts.6cc0651.${id}";
12882 fipsCrypto.clear();
12888 static void to_json(nlohmann::json& j,
const BridgingServerConfiguration& p)
12890 j = nlohmann::json{
12893 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12894 TOJSON_IMPL(bridgingConfigurationFileName),
12895 TOJSON_IMPL(bridgingConfigurationFileCommand),
12896 TOJSON_IMPL(bridgingConfigurationFileCheckSecs),
12897 TOJSON_IMPL(statusReport),
12898 TOJSON_IMPL(externalHealthCheckResponder),
12899 TOJSON_IMPL(internals),
12900 TOJSON_IMPL(certStoreFileName),
12901 TOJSON_IMPL(certStorePasswordHex),
12902 TOJSON_IMPL(enginePolicy),
12903 TOJSON_IMPL(configurationCheckSignalName),
12904 TOJSON_IMPL(fipsCrypto),
12905 TOJSON_IMPL(nsmNode),
12906 TOJSON_IMPL(rtiCloud)
12909 static void from_json(
const nlohmann::json& j, BridgingServerConfiguration& p)
12912 getOptional<std::string>(
"id", p.id, j);
12913 getOptional<BridgingServerConfiguration::OpMode_t>(
"mode", p.mode, j, BridgingServerConfiguration::OpMode_t::omRaw);
12914 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12915 getOptional<std::string>(
"bridgingConfigurationFileName", p.bridgingConfigurationFileName, j);
12916 getOptional<std::string>(
"bridgingConfigurationFileCommand", p.bridgingConfigurationFileCommand, j);
12917 getOptional<int>(
"bridgingConfigurationFileCheckSecs", p.bridgingConfigurationFileCheckSecs, j, 60);
12918 getOptional<BridgingServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12919 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12920 getOptional<BridgingServerInternals>(
"internals", p.internals, j);
12921 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12922 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12923 j.at(
"enginePolicy").get_to(p.enginePolicy);
12924 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.6cc0651.${id}");
12925 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12926 getOptional<NsmNode>(
"nsmNode", p.nsmNode, j);
12927 getOptional<RtiCloudSettings>(
"rtiCloud", p.rtiCloud, j);
12932 JSON_SERIALIZED_CLASS(EarGroupsConfiguration)
12944 IMPLEMENT_JSON_SERIALIZATION()
12962 static void to_json(nlohmann::json& j,
const EarGroupsConfiguration& p)
12964 j = nlohmann::json{
12965 TOJSON_IMPL(groups)
12968 static void from_json(
const nlohmann::json& j, EarGroupsConfiguration& p)
12971 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12975 JSON_SERIALIZED_CLASS(EarServerStatusReportConfiguration)
12987 IMPLEMENT_JSON_SERIALIZATION()
13016 includeGroupDetail =
false;
13021 static void to_json(nlohmann::json& j,
const EarServerStatusReportConfiguration& p)
13023 j = nlohmann::json{
13024 TOJSON_IMPL(fileName),
13025 TOJSON_IMPL(intervalSecs),
13026 TOJSON_IMPL(enabled),
13027 TOJSON_IMPL(includeGroupDetail),
13028 TOJSON_IMPL(runCmd)
13031 static void from_json(
const nlohmann::json& j, EarServerStatusReportConfiguration& p)
13034 getOptional<std::string>(
"fileName", p.fileName, j);
13035 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
13036 getOptional<bool>(
"enabled", p.enabled, j,
false);
13037 getOptional<std::string>(
"runCmd", p.runCmd, j);
13038 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
13042 JSON_SERIALIZED_CLASS(EarServerInternals)
13056 IMPLEMENT_JSON_SERIALIZATION()
13078 housekeeperIntervalMs = 1000;
13082 static void to_json(nlohmann::json& j,
const EarServerInternals& p)
13084 j = nlohmann::json{
13085 TOJSON_IMPL(watchdog),
13086 TOJSON_IMPL(housekeeperIntervalMs),
13087 TOJSON_IMPL(tuning)
13090 static void from_json(
const nlohmann::json& j, EarServerInternals& p)
13093 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
13094 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
13095 getOptional<TuningSettings>(
"tuning", p.tuning, j);
13099 JSON_SERIALIZED_CLASS(EarServerConfiguration)
13110 IMPLEMENT_JSON_SERIALIZATION()
13165 serviceConfigurationFileCheckSecs = 60;
13166 groupsConfigurationFileName.clear();
13167 groupsConfigurationFileCommand.clear();
13168 groupsConfigurationFileCheckSecs = 60;
13169 statusReport.clear();
13170 externalHealthCheckResponder.clear();
13172 certStoreFileName.clear();
13173 certStorePasswordHex.clear();
13174 enginePolicy.clear();
13175 configurationCheckSignalName =
"rts.9a164fa.${id}";
13176 fipsCrypto.clear();
13181 static void to_json(nlohmann::json& j,
const EarServerConfiguration& p)
13183 j = nlohmann::json{
13185 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
13186 TOJSON_IMPL(groupsConfigurationFileName),
13187 TOJSON_IMPL(groupsConfigurationFileCommand),
13188 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
13189 TOJSON_IMPL(statusReport),
13190 TOJSON_IMPL(externalHealthCheckResponder),
13191 TOJSON_IMPL(internals),
13192 TOJSON_IMPL(certStoreFileName),
13193 TOJSON_IMPL(certStorePasswordHex),
13194 TOJSON_IMPL(enginePolicy),
13195 TOJSON_IMPL(configurationCheckSignalName),
13196 TOJSON_IMPL(fipsCrypto),
13200 static void from_json(
const nlohmann::json& j, EarServerConfiguration& p)
13203 getOptional<std::string>(
"id", p.id, j);
13204 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
13205 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
13206 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
13207 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
13208 getOptional<EarServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
13209 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
13210 getOptional<EarServerInternals>(
"internals", p.internals, j);
13211 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
13212 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
13213 j.at(
"enginePolicy").get_to(p.enginePolicy);
13214 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
13215 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
13220 JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
13232 IMPLEMENT_JSON_SERIALIZATION()
13250 static void to_json(nlohmann::json& j,
const EngageSemGroupsConfiguration& p)
13252 j = nlohmann::json{
13253 TOJSON_IMPL(groups)
13256 static void from_json(
const nlohmann::json& j, EngageSemGroupsConfiguration& p)
13259 getOptional<std::vector<Group>>(
"groups", p.groups, j);
13263 JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
13275 IMPLEMENT_JSON_SERIALIZATION()
13304 includeGroupDetail =
false;
13309 static void to_json(nlohmann::json& j,
const EngageSemServerStatusReportConfiguration& p)
13311 j = nlohmann::json{
13312 TOJSON_IMPL(fileName),
13313 TOJSON_IMPL(intervalSecs),
13314 TOJSON_IMPL(enabled),
13315 TOJSON_IMPL(includeGroupDetail),
13316 TOJSON_IMPL(runCmd)
13319 static void from_json(
const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
13322 getOptional<std::string>(
"fileName", p.fileName, j);
13323 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
13324 getOptional<bool>(
"enabled", p.enabled, j,
false);
13325 getOptional<std::string>(
"runCmd", p.runCmd, j);
13326 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
13330 JSON_SERIALIZED_CLASS(EngageSemServerInternals)
13344 IMPLEMENT_JSON_SERIALIZATION()
13366 housekeeperIntervalMs = 1000;
13370 static void to_json(nlohmann::json& j,
const EngageSemServerInternals& p)
13372 j = nlohmann::json{
13373 TOJSON_IMPL(watchdog),
13374 TOJSON_IMPL(housekeeperIntervalMs),
13375 TOJSON_IMPL(tuning)
13378 static void from_json(
const nlohmann::json& j, EngageSemServerInternals& p)
13381 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
13382 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
13383 getOptional<TuningSettings>(
"tuning", p.tuning, j);
13387 JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
13398 IMPLEMENT_JSON_SERIALIZATION()
13459 serviceConfigurationFileCheckSecs = 60;
13460 groupsConfigurationFileName.clear();
13461 groupsConfigurationFileCommand.clear();
13462 groupsConfigurationFileCheckSecs = 60;
13463 statusReport.clear();
13464 externalHealthCheckResponder.clear();
13466 certStoreFileName.clear();
13467 certStorePasswordHex.clear();
13468 enginePolicy.clear();
13469 configurationCheckSignalName =
"rts.9a164fa.${id}";
13470 fipsCrypto.clear();
13475 maxQueuingMs = 15000;
13481 static void to_json(nlohmann::json& j,
const EngageSemServerConfiguration& p)
13483 j = nlohmann::json{
13485 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
13486 TOJSON_IMPL(groupsConfigurationFileName),
13487 TOJSON_IMPL(groupsConfigurationFileCommand),
13488 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
13489 TOJSON_IMPL(statusReport),
13490 TOJSON_IMPL(externalHealthCheckResponder),
13491 TOJSON_IMPL(internals),
13492 TOJSON_IMPL(certStoreFileName),
13493 TOJSON_IMPL(certStorePasswordHex),
13494 TOJSON_IMPL(enginePolicy),
13495 TOJSON_IMPL(configurationCheckSignalName),
13496 TOJSON_IMPL(fipsCrypto),
13498 TOJSON_IMPL(maxQueueLen),
13499 TOJSON_IMPL(minQueuingMs),
13500 TOJSON_IMPL(maxQueuingMs),
13501 TOJSON_IMPL(minPriority),
13502 TOJSON_IMPL(maxPriority)
13505 static void from_json(
const nlohmann::json& j, EngageSemServerConfiguration& p)
13508 getOptional<std::string>(
"id", p.id, j);
13509 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
13510 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
13511 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
13512 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
13513 getOptional<EngageSemServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
13514 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
13515 getOptional<EngageSemServerInternals>(
"internals", p.internals, j);
13516 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
13517 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
13518 j.at(
"enginePolicy").get_to(p.enginePolicy);
13519 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
13520 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
13522 getOptional<int>(
"maxQueueLen", p.maxQueueLen, j, 64);
13523 getOptional<int>(
"minQueuingMs", p.minQueuingMs, j, 0);
13524 getOptional<int>(
"maxQueuingMs", p.maxQueuingMs, j, 15000);
13525 getOptional<int>(
"minPriority", p.minPriority, j, 0);
13526 getOptional<int>(
"maxPriority", p.maxPriority, j, 255);
13530 JSON_SERIALIZED_CLASS(EngateGroup)
13542 IMPLEMENT_JSON_SERIALIZATION()
13547 uint32_t inputHangMs;
13548 uint32_t inputActivationPowerThreshold;
13549 uint32_t inputDeactivationPowerThreshold;
13561 inputActivationPowerThreshold = 700;
13562 inputDeactivationPowerThreshold = 125;
13566 static void to_json(nlohmann::json& j,
const EngateGroup& p)
13569 to_json(g,
static_cast<const Group&
>(p));
13571 j = nlohmann::json{
13572 TOJSON_IMPL(useVad),
13573 TOJSON_IMPL(inputHangMs),
13574 TOJSON_IMPL(inputActivationPowerThreshold),
13575 TOJSON_IMPL(inputDeactivationPowerThreshold)
13578 static void from_json(
const nlohmann::json& j, EngateGroup& p)
13581 from_json(j,
static_cast<Group&
>(p));
13582 getOptional<uint32_t>(
"inputHangMs", p.inputHangMs, j, 750);
13583 getOptional<uint32_t>(
"inputActivationPowerThreshold", p.inputActivationPowerThreshold, j, 700);
13584 getOptional<uint32_t>(
"inputDeactivationPowerThreshold", p.inputDeactivationPowerThreshold, j, 125);
13588 JSON_SERIALIZED_CLASS(EngateGroupsConfiguration)
13600 IMPLEMENT_JSON_SERIALIZATION()
13618 static void to_json(nlohmann::json& j,
const EngateGroupsConfiguration& p)
13620 j = nlohmann::json{
13621 TOJSON_IMPL(groups)
13624 static void from_json(
const nlohmann::json& j, EngateGroupsConfiguration& p)
13627 getOptional<std::vector<EngateGroup>>(
"groups", p.groups, j);
13631 JSON_SERIALIZED_CLASS(EngateServerStatusReportConfiguration)
13643 IMPLEMENT_JSON_SERIALIZATION()
13672 includeGroupDetail =
false;
13677 static void to_json(nlohmann::json& j,
const EngateServerStatusReportConfiguration& p)
13679 j = nlohmann::json{
13680 TOJSON_IMPL(fileName),
13681 TOJSON_IMPL(intervalSecs),
13682 TOJSON_IMPL(enabled),
13683 TOJSON_IMPL(includeGroupDetail),
13684 TOJSON_IMPL(runCmd)
13687 static void from_json(
const nlohmann::json& j, EngateServerStatusReportConfiguration& p)
13690 getOptional<std::string>(
"fileName", p.fileName, j);
13691 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
13692 getOptional<bool>(
"enabled", p.enabled, j,
false);
13693 getOptional<std::string>(
"runCmd", p.runCmd, j);
13694 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
13698 JSON_SERIALIZED_CLASS(EngateServerInternals)
13712 IMPLEMENT_JSON_SERIALIZATION()
13734 housekeeperIntervalMs = 1000;
13738 static void to_json(nlohmann::json& j,
const EngateServerInternals& p)
13740 j = nlohmann::json{
13741 TOJSON_IMPL(watchdog),
13742 TOJSON_IMPL(housekeeperIntervalMs),
13743 TOJSON_IMPL(tuning)
13746 static void from_json(
const nlohmann::json& j, EngateServerInternals& p)
13749 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
13750 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
13751 getOptional<TuningSettings>(
"tuning", p.tuning, j);
13755 JSON_SERIALIZED_CLASS(EngateServerConfiguration)
13766 IMPLEMENT_JSON_SERIALIZATION()
13821 serviceConfigurationFileCheckSecs = 60;
13822 groupsConfigurationFileName.clear();
13823 groupsConfigurationFileCommand.clear();
13824 groupsConfigurationFileCheckSecs = 60;
13825 statusReport.clear();
13826 externalHealthCheckResponder.clear();
13828 certStoreFileName.clear();
13829 certStorePasswordHex.clear();
13830 enginePolicy.clear();
13831 configurationCheckSignalName =
"rts.9a164fa.${id}";
13832 fipsCrypto.clear();
13837 static void to_json(nlohmann::json& j,
const EngateServerConfiguration& p)
13839 j = nlohmann::json{
13841 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
13842 TOJSON_IMPL(groupsConfigurationFileName),
13843 TOJSON_IMPL(groupsConfigurationFileCommand),
13844 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
13845 TOJSON_IMPL(statusReport),
13846 TOJSON_IMPL(externalHealthCheckResponder),
13847 TOJSON_IMPL(internals),
13848 TOJSON_IMPL(certStoreFileName),
13849 TOJSON_IMPL(certStorePasswordHex),
13850 TOJSON_IMPL(enginePolicy),
13851 TOJSON_IMPL(configurationCheckSignalName),
13852 TOJSON_IMPL(fipsCrypto),
13856 static void from_json(
const nlohmann::json& j, EngateServerConfiguration& p)
13859 getOptional<std::string>(
"id", p.id, j);
13860 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
13861 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
13862 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
13863 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
13864 getOptional<EngateServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
13865 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
13866 getOptional<EngateServerInternals>(
"internals", p.internals, j);
13867 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
13868 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
13869 j.at(
"enginePolicy").get_to(p.enginePolicy);
13870 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
13871 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
13876 static inline void dumpExampleConfigurations(
const char *path)
13878 WatchdogSettings::document();
13879 FileRecordingRequest::document();
13880 Feature::document();
13881 Featureset::document();
13883 RtpPayloadTypeTranslation::document();
13884 NetworkInterfaceDevice::document();
13885 ListOfNetworkInterfaceDevice::document();
13886 RtpHeader::document();
13887 BlobInfo::document();
13888 TxAudioUri::document();
13889 AdvancedTxParams::document();
13890 Identity::document();
13891 Location::document();
13893 Connectivity::document();
13894 PresenceDescriptorGroupItem::document();
13895 PresenceDescriptor::document();
13896 NetworkTxOptions::document();
13897 TcpNetworkTxOptions::document();
13898 NetworkAddress::document();
13899 NetworkAddressRxTx::document();
13900 NetworkAddressRestrictionList::document();
13901 StringRestrictionList::document();
13902 Rallypoint::document();
13903 RallypointCluster::document();
13904 NetworkDeviceDescriptor::document();
13905 TxAudio::document();
13906 AudioDeviceDescriptor::document();
13907 ListOfAudioDeviceDescriptor::document();
13909 TalkerInformation::document();
13910 GroupTalkers::document();
13911 Presence::document();
13912 Advertising::document();
13913 GroupPriorityTranslation::document();
13914 GroupTimeline::document();
13915 GroupAppTransport::document();
13916 RtpProfile::document();
13918 Mission::document();
13919 LicenseDescriptor::document();
13920 EngineNetworkingRpUdpStreaming::document();
13921 EnginePolicyNetworking::document();
13924 Bridge::document();
13925 AndroidAudio::document();
13926 EnginePolicyAudio::document();
13927 SecurityCertificate::document();
13928 EnginePolicySecurity::document();
13929 EnginePolicyLogging::document();
13930 EnginePolicyDatabase::document();
13931 NamedAudioDevice::document();
13932 EnginePolicyNamedAudioDevices::document();
13933 Licensing::document();
13934 DiscoveryMagellan::document();
13935 DiscoverySsdp::document();
13936 DiscoverySap::document();
13937 DiscoveryCistech::document();
13938 DiscoveryTrellisware::document();
13939 DiscoveryConfiguration::document();
13940 EnginePolicyInternals::document();
13941 EnginePolicyTimelines::document();
13942 RtpMapEntry::document();
13943 ExternalModule::document();
13944 ExternalCodecDescriptor::document();
13945 EnginePolicy::document();
13946 TalkgroupAsset::document();
13947 EngageDiscoveredGroup::document();
13948 RallypointPeer::document();
13949 RallypointServerLimits::document();
13950 RallypointServerStatusReportConfiguration::document();
13951 RallypointServerLinkGraph::document();
13952 ExternalHealthCheckResponder::document();
13954 PeeringConfiguration::document();
13955 IgmpSnooping::document();
13956 RallypointReflector::document();
13957 RallypointUdpStreaming::document();
13958 RallypointServer::document();
13959 PlatformDiscoveredService::document();
13960 TimelineQueryParameters::document();
13961 CertStoreCertificate::document();
13962 CertStore::document();
13963 CertStoreCertificateElement::document();
13964 CertStoreDescriptor::document();
13965 CertificateDescriptor::document();
13966 BridgeCreationDetail::document();
13967 GroupConnectionDetail::document();
13968 GroupTxDetail::document();
13969 GroupCreationDetail::document();
13970 GroupReconfigurationDetail::document();
13971 GroupHealthReport::document();
13972 InboundProcessorStats::document();
13973 TrafficCounter::document();
13974 GroupStats::document();
13975 RallypointConnectionDetail::document();
13976 BridgingConfiguration::document();
13977 BridgingServerStatusReportConfiguration::document();
13978 BridgingServerInternals::document();
13979 RtiCloudSettings::document();
13980 BridgingServerConfiguration::document();
13981 EarGroupsConfiguration::document();
13982 EarServerStatusReportConfiguration::document();
13983 EarServerInternals::document();
13984 EarServerConfiguration::document();
13985 RangerPackets::document();
13986 TransportImpairment::document();
13988 EngageSemGroupsConfiguration::document();
13989 EngageSemServerStatusReportConfiguration::document();
13990 EngageSemServerInternals::document();
13991 EngageSemServerConfiguration::document();
13996 #pragma GCC diagnostic pop
static void nsmNodeFromEmbeddedServerJson(const nlohmann::json &j, const char *key, NsmNode &node)
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.
static void nsmConfigurationResourcesFromJson(const nlohmann::json &j, std::vector< NsmNodeResource > &out)
Parse stateMachine.resources: array of objects {"id","priority"}.
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.
bool active
[Optional, Default: true] Runtime activity flag resolved by EBS.
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.
RtiCloudSettings rtiCloud
[Optional] Rally Tactical cloud (RTI) integration.
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)
NsmNode nsmNode
[Optional] Settings for embedded NSM node behavior.
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.
Internal bridging server settings.
int nsmResourceReleaseCooldownMs
[Optional, Default: 30000] Time to keep an unhealthy NSM resource out of election before rejoining.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
int nsmUnhealthyBridgeGraceMs
[Optional, Default: 5000] Time to wait before declaring an owned bridge unhealthy.
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.
NsmNode nsm
[Optional] Embedded NSM node settings (JSON key nsm; legacy flat NsmConfiguration accepted).
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
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....
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.
NsmNode nsm
[Optional] Embedded NSM node settings (JSON key nsm; legacy flat NsmConfiguration accepted).
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.
NsmNode nsm
[Optional] Embedded NSM node settings (JSON key nsm; legacy flat NsmConfiguration accepted).
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.
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 requireMulticast
[Optional, Default true] Require multicast support
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 activationHmac
The HMAC to be used for activation purposes.
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.
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.
NsmNode nsm
[Optional] Embedded NSM node settings (JSON key nsm; legacy flat NsmConfiguration accepted).
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...
int goingActiveRandomDelayMs
[Optional, Default: 500] Random delay in ms before entering GOING_ACTIVE (spread elections).
int internalMultiplier
[Optional, Default: 1] Scales TX interval and transition wait (testing / timing).
Periodic external command to refresh CoT point location.
std::string runCmd
Shell command returning JSON: {"lat":"…","lon":"…"[, "ce","hae","le"]}.
int intervalSecs
[Optional, Default: 10] Seconds between polls.
bool failClosed
[Optional, Default: true] When true, poll failure retains the last fix.
bool enabled
[Optional, Default: false] When true, runCmd is polled for location.
Cursor-on-Target envelope for NSM wire payloads (optional).
std::string callsign
Optional CoT contact callsign (emitted as detail/contact/@callsign ).
int idleIntervalSecs
CoT presence interval for fully idle nodes when announceWhenIdle is true (default 30).
NsmNodeCotLocationPollSettings locationPoll
Optional periodic command to refresh CoT point location.
std::string detailJson
Optional JSON object serialized as string for extra CoT detail elements.
bool announceWhenIdle
When useCot is true, fully idle nodes TX full resource state at idleIntervalSecs (default false).
Optional external gate for NSM election wire participation.
std::string runCmd
Shell command; trimmed stdout must be 1 (participate) or 0 (idle).
int intervalSecs
[Optional, Default: 2] Seconds between runCmd polls.
bool failClosed
[Optional, Default: true] When true, runCmd failure/timeout is treated as 0.
bool enabled
[Optional, Default: false] When true, election participation follows runCmd.
Configuration for a Nsm node.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
NsmNodeStatusReportConfiguration statusReport
Details for producing a status report.
std::string domainName
Logical domain label for status and monitoring.
NsmNodeElectionGateSettings electionGate
Optional external gate for election wire participation (Seeker active/standby, etc....
WatchdogSettings watchdog
[Optional] Settings for the node's watchdog.
NsmNodeLogging logging
Console / syslog logging.
Licensing licensing
Licensing settings.
Featureset featureset
Optional feature set.
std::string id
Unique identifier for this process instance (also used as default state machine id when stateMachine....
int defaultPriority
[Optional, Default: 0] Election priority byte when a resource omits priority or uses -1 (see NsmNodeR...
bool dashboardToken
[Optional, Default: false] When true with dashboard logging, show resource token in the UI.
std::vector< NsmNodePeriodic > periodics
Periodic commands (JSON output, external token range, etc.).
PacketCapturer txCapture
Details for capture of transmitted packets
NsmNodeScripts scripts
Lifecycle hook scripts.
std::string multicastInterfaceName
Multicast bind / subscription NIC (SO_BINDTODEVICE / IP_ADD_MEMBERSHIP).
std::string name
Human-readable label for operators.
IpFamilyType_t ipFamily
[Optional, Default IpFamilyType_t::ifIp4] Address family for interface validation and logging.
int fixedToken
[Optional, Default: -1] Fixed global token for testing; >= 0 forces that token, -1 uses random per el...
TuningSettings tuning
[Optional] Low-level tuning
PacketCapturer rxCapture
Details for capture of received packets
NsmNodeCotSettings cot
Optional CoT wrapping for wire payloads.
NsmConfiguration stateMachine
Core NSM protocol and networking configuration (UDP, tokens, timing).
Console / syslog logging behaviour for nsmd.
bool dashboard
[Optional, Default: false] Full-screen dashboard instead of line logs.
int level
[Optional, Default: 3] ILogger level (fatal=0 ... debug=5).
Scheduled command (e.g. external token range discovery).
One logical resource in the NSM state machine with its election priority (high byte of token).
int priority
[Optional, Default: -1] Priority byte for token MSB; -1 means use NsmNode.defaultPriority when loaded...
External hook scripts for state transitions and reporting.
Configuration for the Nsm status report file.
bool includeResourceDetail
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.
OutboundWebSocketTlsPolicy_t
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.
OutboundWebSocketTlsPolicy_t outboundWebSocketTlsPolicy
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.
NsmNode nsm
[Optional] Embedded NSM node settings (JSON key nsm; legacy flat NsmConfiguration accepted).
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
std::string name
A human-readable name for the Rallypoint.
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.
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.
RtiCloudSettings rtiCloud
[Optional] Rally Tactical cloud (RTI) integration.
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...
RFC4733 event information.
bool end
Indicates whether this is the end of the event.
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.
Optional Rally Tactical cloud (RTI) integration (Rallypoint, Engage Bridge Service,...
std::string serviceBaseUrlPrefix
[Optional, Default: "prod.com"] Prefix used to construct default RTI SaaS base URL as "<prefix>....
std::string enrollmentCode
Enrollment code for the RTI cloud service.
bool enabled
Master switch: when true, the product uses RTI cloud HTTP APIs (token + heartbeat).
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.
int errorPercentage
[Optional, Default: 0] When > 0, percentage of packets forced to error path.
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.
HeaderExtensionType_t hdrExtType
[Optional, Default: hetEngageStandard] The header extension type to use. See HeaderExtensionType_t fo...
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....
HeaderExtensionType_t
Header extension types.
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.