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()
2665 errorPercentage = 0;
2669 static void to_json(nlohmann::json& j,
const TransportImpairment& p)
2672 TOJSON_IMPL(jitterMs),
2673 TOJSON_IMPL(lossPercentage),
2674 TOJSON_IMPL(errorPercentage)
2677 static void from_json(
const nlohmann::json& j, TransportImpairment& p)
2680 getOptional<int>(
"jitterMs", p.jitterMs, j, 0);
2681 getOptional<int>(
"lossPercentage", p.lossPercentage, j, 0);
2682 getOptional<int>(
"errorPercentage", p.errorPercentage, j, 0);
2687 JSON_SERIALIZED_CLASS(NsmNetworking)
2701 IMPLEMENT_JSON_SERIALIZATION()
2705 std::string address;
2712 std::string cryptoPassword;
2713 int maxUdpPayloadBytes;
2725 priority = TxPriority_t::priVoice;
2727 rxImpairment.clear();
2728 txImpairment.clear();
2729 cryptoPassword.clear();
2730 maxUdpPayloadBytes = 800;
2734 static void to_json(nlohmann::json& j,
const NsmNetworking& p)
2736 nlohmann::json pathJson;
2737 to_json(pathJson, p.address);
2741 TOJSON_IMPL(priority),
2742 TOJSON_IMPL(txOversend),
2743 TOJSON_IMPL(rxImpairment),
2744 TOJSON_IMPL(txImpairment),
2745 TOJSON_IMPL(cryptoPassword),
2746 TOJSON_IMPL(maxUdpPayloadBytes)
2749 static void from_json(
const nlohmann::json& j, NsmNetworking& p)
2752 getOptional<std::string>(
"address", p.address, j);
2753 getOptional<int>(
"port", p.port, j, 8513);
2754 getOptional<int>(
"ttl", p.ttl, j, 1);
2755 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2756 getOptional<int>(
"txOversend", p.txOversend, j, 0);
2757 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
2758 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
2759 getOptional(
"cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
2760 getOptional<int>(
"maxUdpPayloadBytes", p.maxUdpPayloadBytes, j, 800);
2764 JSON_SERIALIZED_CLASS(NsmNodeResource)
2772 IMPLEMENT_JSON_SERIALIZATION()
2793 static void to_json(nlohmann::json& j,
const NsmNodeResource& p)
2797 TOJSON_IMPL(priority)
2800 static void from_json(
const nlohmann::json& j, NsmNodeResource& p)
2803 getOptional<std::string>(
"id", p.id, j);
2804 getOptional<int>(
"priority", p.priority, j, -1);
2811 if (!j.contains(
"resources") || !j[
"resources"].is_array())
2815 for (
const auto& el : j[
"resources"])
2817 if (!el.is_object())
2823 getOptional<std::string>(
"id", nr.
id, el);
2824 getOptional<int>(
"priority", nr.
priority, el, -1);
2834 JSON_SERIALIZED_CLASS(NsmConfiguration)
2845 IMPLEMENT_JSON_SERIALIZATION()
2853 std::vector<NsmNodeResource> resources;
2857 int transitionSecsFactor;
2862 bool logCommandOutput;
2872 favorUptime =
false;
2875 tokenStart = 1000000;
2878 transitionSecsFactor = 3;
2879 internalMultiplier = 1;
2880 goingActiveRandomDelayMs = 500;
2881 logCommandOutput =
false;
2885 static void to_json(nlohmann::json& j,
const NsmConfiguration& p)
2889 TOJSON_IMPL(favorUptime),
2890 TOJSON_IMPL(networking),
2891 TOJSON_IMPL(resources),
2892 TOJSON_IMPL(tokenStart),
2893 TOJSON_IMPL(tokenEnd),
2894 TOJSON_IMPL(intervalSecs),
2895 TOJSON_IMPL(transitionSecsFactor),
2896 TOJSON_IMPL(internalMultiplier),
2897 TOJSON_IMPL(goingActiveRandomDelayMs),
2898 TOJSON_IMPL(logCommandOutput),
2901 static void from_json(
const nlohmann::json& j, NsmConfiguration& p)
2904 getOptional(
"id", p.id, j);
2905 getOptional<bool>(
"favorUptime", p.favorUptime, j,
false);
2906 getOptional<NsmNetworking>(
"networking", p.networking, j);
2908 getOptional<int>(
"tokenStart", p.tokenStart, j, 1000000);
2909 getOptional<int>(
"tokenEnd", p.tokenEnd, j, 2000000);
2910 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
2911 getOptional<int>(
"transitionSecsFactor", p.transitionSecsFactor, j, 3);
2912 getOptional<int>(
"internalMultiplier", p.internalMultiplier, j, 1);
2913 getOptional<int>(
"goingActiveRandomDelayMs", p.goingActiveRandomDelayMs, j, 500);
2914 getOptional<bool>(
"logCommandOutput", p.logCommandOutput, j,
false);
2919 JSON_SERIALIZED_CLASS(Rallypoint)
2929 IMPLEMENT_JSON_SERIALIZATION()
3038 certificate.clear();
3039 certificateKey.clear();
3040 caCertificates.clear();
3042 transactionTimeoutMs = 0;
3043 disableMessageSigning =
false;
3044 connectionTimeoutSecs = 0;
3045 tcpTxOptions.clear();
3047 protocol = rppTlsTcp;
3049 additionalProtocols.clear();
3052 bool matches(
const Rallypoint& other)
3054 if(!host.matches(other.host))
3059 if(protocol != other.protocol)
3064 if(path.compare(other.path) != 0)
3069 if(certificate.compare(other.certificate) != 0)
3074 if(certificateKey.compare(other.certificateKey) != 0)
3079 if(verifyPeer != other.verifyPeer)
3084 if(allowSelfSignedCertificate != other.allowSelfSignedCertificate)
3089 if(caCertificates.size() != other.caCertificates.size())
3094 for(
size_t x = 0; x < caCertificates.size(); x++)
3098 for(
size_t y = 0; y < other.caCertificates.size(); y++)
3100 if(caCertificates[x].compare(other.caCertificates[y]) == 0)
3113 if(transactionTimeoutMs != other.transactionTimeoutMs)
3118 if(disableMessageSigning != other.disableMessageSigning)
3122 if(connectionTimeoutSecs != other.connectionTimeoutSecs)
3126 if(tcpTxOptions.
priority != other.tcpTxOptions.priority)
3130 if(sni.compare(other.sni) != 0)
3139 static void to_json(nlohmann::json& j,
const Rallypoint& p)
3143 TOJSON_IMPL(certificate),
3144 TOJSON_IMPL(certificateKey),
3145 TOJSON_IMPL(verifyPeer),
3146 TOJSON_IMPL(allowSelfSignedCertificate),
3147 TOJSON_IMPL(caCertificates),
3148 TOJSON_IMPL(transactionTimeoutMs),
3149 TOJSON_IMPL(disableMessageSigning),
3150 TOJSON_IMPL(connectionTimeoutSecs),
3151 TOJSON_IMPL(tcpTxOptions),
3153 TOJSON_IMPL(protocol),
3155 TOJSON_IMPL(additionalProtocols)
3159 static void from_json(
const nlohmann::json& j, Rallypoint& p)
3162 j.at(
"host").get_to(p.host);
3163 getOptional(
"certificate", p.certificate, j);
3164 getOptional(
"certificateKey", p.certificateKey, j);
3165 getOptional<bool>(
"verifyPeer", p.verifyPeer, j,
true);
3166 getOptional<bool>(
"allowSelfSignedCertificate", p.allowSelfSignedCertificate, j,
false);
3167 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
3168 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 0);
3169 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
3170 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
3171 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
3172 getOptional<std::string>(
"sni", p.sni, j);
3173 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
3174 getOptional<std::string>(
"path", p.path, j);
3175 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
3179 JSON_SERIALIZED_CLASS(RallypointCluster)
3192 IMPLEMENT_JSON_SERIALIZATION()
3208 } ConnectionStrategy_t;
3232 connectionStrategy = csRoundRobin;
3233 rallypoints.clear();
3235 connectionTimeoutSecs = 5;
3236 transactionTimeoutMs = 10000;
3240 static void to_json(nlohmann::json& j,
const RallypointCluster& p)
3243 TOJSON_IMPL(connectionStrategy),
3244 TOJSON_IMPL(rallypoints),
3245 TOJSON_IMPL(rolloverSecs),
3246 TOJSON_IMPL(connectionTimeoutSecs),
3247 TOJSON_IMPL(transactionTimeoutMs)
3250 static void from_json(
const nlohmann::json& j, RallypointCluster& p)
3253 getOptional<RallypointCluster::ConnectionStrategy_t>(
"connectionStrategy", p.connectionStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
3254 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
3255 getOptional<int>(
"rolloverSecs", p.rolloverSecs, j, 10);
3256 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
3257 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 10000);
3262 JSON_SERIALIZED_CLASS(NetworkDeviceDescriptor)
3274 IMPLEMENT_JSON_SERIALIZATION()
3315 manufacturer.clear();
3318 serialNumber.clear();
3323 virtual std::string toString()
3327 snprintf(buff,
sizeof(buff),
"deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
3330 manufacturer.c_str(),
3333 serialNumber.c_str(),
3337 return std::string(buff);
3341 static void to_json(nlohmann::json& j,
const NetworkDeviceDescriptor& p)
3344 TOJSON_IMPL(deviceId),
3346 TOJSON_IMPL(manufacturer),
3348 TOJSON_IMPL(hardwareId),
3349 TOJSON_IMPL(serialNumber),
3354 static void from_json(
const nlohmann::json& j, NetworkDeviceDescriptor& p)
3357 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3358 getOptional(
"name", p.name, j);
3359 getOptional(
"manufacturer", p.manufacturer, j);
3360 getOptional(
"model", p.model, j);
3361 getOptional(
"hardwareId", p.hardwareId, j);
3362 getOptional(
"serialNumber", p.serialNumber, j);
3363 getOptional(
"type", p.type, j);
3364 getOptional(
"extra", p.extra, j);
3368 JSON_SERIALIZED_CLASS(AudioGate)
3379 IMPLEMENT_JSON_SERIALIZATION()
3418 static void to_json(nlohmann::json& j,
const AudioGate& p)
3421 TOJSON_IMPL(enabled),
3422 TOJSON_IMPL(useVad),
3423 TOJSON_IMPL(hangMs),
3424 TOJSON_IMPL(windowMin),
3425 TOJSON_IMPL(windowMax),
3426 TOJSON_IMPL(coefficient)
3429 static void from_json(
const nlohmann::json& j, AudioGate& p)
3432 getOptional<bool>(
"enabled", p.enabled, j,
false);
3433 getOptional<bool>(
"useVad", p.useVad, j,
false);
3434 getOptional<uint32_t>(
"hangMs", p.hangMs, j, 1500);
3435 getOptional<uint32_t>(
"windowMin", p.windowMin, j, 25);
3436 getOptional<uint32_t>(
"windowMax", p.windowMax, j, 125);
3437 getOptional<double>(
"coefficient", p.coefficient, j, 1.75);
3441 JSON_SERIALIZED_CLASS(TxAudio)
3456 IMPLEMENT_JSON_SERIALIZATION()
3457 IMPLEMENT_JSON_DOCUMENTATION(
TxAudio)
3628 hetEngageStandard = 0,
3631 hetNatoStanga5643 = 1
3632 } HeaderExtensionType_t;
3714 encoder = TxAudio::TxCodec_t::ctUnknown;
3715 encoderName.clear();
3721 extensionSendInterval = 10;
3722 initialHeaderBurst = 5;
3723 trailingHeaderBurst = 5;
3724 startTxNotifications = 5;
3725 customRtpPayloadType = -1;
3727 resetRtpOnTx =
true;
3728 enableSmoothing =
true;
3730 smoothedHangTimeMs = 0;
3731 hdrExtType = HeaderExtensionType_t::hetEngageStandard;
3735 static void to_json(nlohmann::json& j,
const TxAudio& p)
3738 TOJSON_IMPL(enabled),
3739 TOJSON_IMPL(encoder),
3740 TOJSON_IMPL(encoderName),
3741 TOJSON_IMPL(framingMs),
3742 TOJSON_IMPL(blockCount),
3744 TOJSON_IMPL(noHdrExt),
3745 TOJSON_IMPL(maxTxSecs),
3746 TOJSON_IMPL(extensionSendInterval),
3747 TOJSON_IMPL(initialHeaderBurst),
3748 TOJSON_IMPL(trailingHeaderBurst),
3749 TOJSON_IMPL(startTxNotifications),
3750 TOJSON_IMPL(customRtpPayloadType),
3751 TOJSON_IMPL(resetRtpOnTx),
3752 TOJSON_IMPL(enableSmoothing),
3754 TOJSON_IMPL(smoothedHangTimeMs),
3755 TOJSON_IMPL(hdrExtType)
3760 static void from_json(
const nlohmann::json& j, TxAudio& p)
3763 getOptional<bool>(
"enabled", p.enabled, j,
true);
3764 getOptional<TxAudio::TxCodec_t>(
"encoder", p.encoder, j, TxAudio::TxCodec_t::ctOpus8000);
3765 getOptional<std::string>(
"encoderName", p.encoderName, j, EMPTY_STRING);
3766 getOptional(
"framingMs", p.framingMs, j, 60);
3767 getOptional(
"blockCount", p.blockCount, j, 0);
3768 getOptional(
"fdx", p.fdx, j,
false);
3769 getOptional(
"noHdrExt", p.noHdrExt, j,
false);
3770 getOptional(
"maxTxSecs", p.maxTxSecs, j, 0);
3771 getOptional(
"extensionSendInterval", p.extensionSendInterval, j, 10);
3772 getOptional(
"initialHeaderBurst", p.initialHeaderBurst, j, 5);
3773 getOptional(
"trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3774 getOptional(
"startTxNotifications", p.startTxNotifications, j, 5);
3775 getOptional(
"customRtpPayloadType", p.customRtpPayloadType, j, -1);
3776 getOptional(
"resetRtpOnTx", p.resetRtpOnTx, j,
true);
3777 getOptional(
"enableSmoothing", p.enableSmoothing, j,
true);
3778 getOptional(
"dtx", p.dtx, j,
false);
3779 getOptional(
"smoothedHangTimeMs", p.smoothedHangTimeMs, j, 0);
3780 getOptional(
"hdrExtType", p.hdrExtType, j, TxAudio::HeaderExtensionType_t::hetEngageStandard);
3786 JSON_SERIALIZED_CLASS(AudioRegistryDevice)
3798 IMPLEMENT_JSON_SERIALIZATION()
3837 manufacturer.clear();
3839 serialNumber.clear();
3844 virtual std::string toString()
3848 snprintf(buff,
sizeof(buff),
"hardwareId=%s, isDefault=%d, name=%s, manufacturer=%s, model=%s, serialNumber=%s, type=%s, extra=%s",
3852 manufacturer.c_str(),
3854 serialNumber.c_str(),
3858 return std::string(buff);
3862 static void to_json(nlohmann::json& j,
const AudioRegistryDevice& p)
3865 TOJSON_IMPL(hardwareId),
3866 TOJSON_IMPL(isDefault),
3868 TOJSON_IMPL(manufacturer),
3870 TOJSON_IMPL(serialNumber),
3875 static void from_json(
const nlohmann::json& j, AudioRegistryDevice& p)
3878 getOptional<std::string>(
"hardwareId", p.hardwareId, j, EMPTY_STRING);
3879 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
3880 getOptional(
"name", p.name, j);
3881 getOptional(
"manufacturer", p.manufacturer, j);
3882 getOptional(
"model", p.model, j);
3883 getOptional(
"serialNumber", p.serialNumber, j);
3884 getOptional(
"type", p.type, j);
3885 getOptional(
"extra", p.extra, j);
3890 JSON_SERIALIZED_CLASS(AudioRegistry)
3902 IMPLEMENT_JSON_SERIALIZATION()
3923 virtual std::string toString()
3925 return std::string(
"");
3929 static void to_json(nlohmann::json& j,
const AudioRegistry& p)
3932 TOJSON_IMPL(inputs),
3933 TOJSON_IMPL(outputs)
3936 static void from_json(
const nlohmann::json& j, AudioRegistry& p)
3939 getOptional<std::vector<AudioRegistryDevice>>(
"inputs", p.inputs, j);
3940 getOptional<std::vector<AudioRegistryDevice>>(
"outputs", p.outputs, j);
3944 JSON_SERIALIZED_CLASS(AudioDeviceDescriptor)
3956 IMPLEMENT_JSON_SERIALIZATION()
4050 direction = dirUnknown;
4051 boostPercentage = 0;
4056 manufacturer.clear();
4059 serialNumber.clear();
4065 virtual std::string toString()
4069 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",
4077 manufacturer.c_str(),
4080 serialNumber.c_str(),
4086 return std::string(buff);
4090 static void to_json(nlohmann::json& j,
const AudioDeviceDescriptor& p)
4093 TOJSON_IMPL(deviceId),
4094 TOJSON_IMPL(samplingRate),
4095 TOJSON_IMPL(channels),
4096 TOJSON_IMPL(direction),
4097 TOJSON_IMPL(boostPercentage),
4098 TOJSON_IMPL(isAdad),
4100 TOJSON_IMPL(manufacturer),
4102 TOJSON_IMPL(hardwareId),
4103 TOJSON_IMPL(serialNumber),
4104 TOJSON_IMPL(isDefault),
4107 TOJSON_IMPL(isPresent)
4110 static void from_json(
const nlohmann::json& j, AudioDeviceDescriptor& p)
4113 getOptional<int>(
"deviceId", p.deviceId, j, 0);
4114 getOptional<int>(
"samplingRate", p.samplingRate, j, 0);
4115 getOptional<int>(
"channels", p.channels, j, 0);
4116 getOptional<AudioDeviceDescriptor::Direction_t>(
"direction", p.direction, j,
4117 AudioDeviceDescriptor::Direction_t::dirUnknown);
4118 getOptional<int>(
"boostPercentage", p.boostPercentage, j, 0);
4120 getOptional<bool>(
"isAdad", p.isAdad, j,
false);
4121 getOptional(
"name", p.name, j);
4122 getOptional(
"manufacturer", p.manufacturer, j);
4123 getOptional(
"model", p.model, j);
4124 getOptional(
"hardwareId", p.hardwareId, j);
4125 getOptional(
"serialNumber", p.serialNumber, j);
4126 getOptional(
"isDefault", p.isDefault, j);
4127 getOptional(
"type", p.type, j);
4128 getOptional(
"extra", p.extra, j);
4129 getOptional<bool>(
"isPresent", p.isPresent, j,
false);
4133 JSON_SERIALIZED_CLASS(ListOfAudioDeviceDescriptor)
4136 IMPLEMENT_JSON_SERIALIZATION()
4140 std::vector<AudioDeviceDescriptor> list;
4159 static void from_json(
const nlohmann::json& j, ListOfAudioDeviceDescriptor& p)
4162 getOptional<std::vector<AudioDeviceDescriptor>>(
"list", p.list, j);
4166 JSON_SERIALIZED_CLASS(Audio)
4176 IMPLEMENT_JSON_SERIALIZATION()
4177 IMPLEMENT_JSON_DOCUMENTATION(
Audio)
4219 inputHardwareId.clear();
4222 outputHardwareId.clear();
4224 outputLevelLeft = 100;
4225 outputLevelRight = 100;
4226 outputMuted =
false;
4230 static void to_json(nlohmann::json& j,
const Audio& p)
4233 TOJSON_IMPL(enabled),
4234 TOJSON_IMPL(inputId),
4235 TOJSON_IMPL(inputHardwareId),
4236 TOJSON_IMPL(inputGain),
4237 TOJSON_IMPL(outputId),
4238 TOJSON_IMPL(outputHardwareId),
4239 TOJSON_IMPL(outputLevelLeft),
4240 TOJSON_IMPL(outputLevelRight),
4241 TOJSON_IMPL(outputMuted)
4244 static void from_json(
const nlohmann::json& j, Audio& p)
4247 getOptional<bool>(
"enabled", p.enabled, j,
true);
4248 getOptional<int>(
"inputId", p.inputId, j, 0);
4249 getOptional<std::string>(
"inputHardwareId", p.inputHardwareId, j, EMPTY_STRING);
4250 getOptional<int>(
"inputGain", p.inputGain, j, 0);
4251 getOptional<int>(
"outputId", p.outputId, j, 0);
4252 getOptional<std::string>(
"outputHardwareId", p.outputHardwareId, j, EMPTY_STRING);
4253 getOptional<int>(
"outputGain", p.outputGain, j, 0);
4254 getOptional<int>(
"outputLevelLeft", p.outputLevelLeft, j, 100);
4255 getOptional<int>(
"outputLevelRight", p.outputLevelRight, j, 100);
4256 getOptional<bool>(
"outputMuted", p.outputMuted, j,
false);
4260 JSON_SERIALIZED_CLASS(TalkerInformation)
4272 IMPLEMENT_JSON_SERIALIZATION()
4288 matSsrcGenerated = 2
4289 } ManufacturedAliasType_t;
4334 aliasSpecializer = 0;
4336 manufacturedAliasType = ManufacturedAliasType_t::matNone;
4341 static void to_json(nlohmann::json& j,
const TalkerInformation& p)
4345 TOJSON_IMPL(nodeId),
4346 TOJSON_IMPL(rxFlags),
4347 TOJSON_IMPL(txPriority),
4349 TOJSON_IMPL(duplicateCount),
4350 TOJSON_IMPL(aliasSpecializer),
4351 TOJSON_IMPL(rxMuted),
4352 TOJSON_IMPL(manufacturedAliasType),
4356 static void from_json(
const nlohmann::json& j, TalkerInformation& p)
4359 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
4360 getOptional<std::string>(
"nodeId", p.nodeId, j, EMPTY_STRING);
4361 getOptional<uint16_t>(
"rxFlags", p.rxFlags, j, 0);
4362 getOptional<int>(
"txPriority", p.txPriority, j, 0);
4363 getOptional<uint32_t>(
"txId", p.txId, j, 0);
4364 getOptional<int>(
"duplicateCount", p.duplicateCount, j, 0);
4365 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
4366 getOptional<bool>(
"rxMuted", p.rxMuted, j,
false);
4367 getOptional<TalkerInformation::ManufacturedAliasType_t>(
"manufacturedAliasType", p.manufacturedAliasType, j, TalkerInformation::ManufacturedAliasType_t::matNone);
4368 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
4372 JSON_SERIALIZED_CLASS(GroupTalkers)
4386 IMPLEMENT_JSON_SERIALIZATION()
4391 std::vector<TalkerInformation>
list;
4404 static void to_json(nlohmann::json& j,
const GroupTalkers& p)
4410 static void from_json(
const nlohmann::json& j, GroupTalkers& p)
4413 getOptional<std::vector<TalkerInformation>>(
"list", p.list, j);
4417 JSON_SERIALIZED_CLASS(Presence)
4429 IMPLEMENT_JSON_SERIALIZATION()
4430 IMPLEMENT_JSON_DOCUMENTATION(
Presence)
4478 minIntervalSecs = 5;
4479 reduceImmediacy =
false;
4483 static void to_json(nlohmann::json& j,
const Presence& p)
4486 TOJSON_IMPL(format),
4487 TOJSON_IMPL(intervalSecs),
4488 TOJSON_IMPL(listenOnly),
4489 TOJSON_IMPL(minIntervalSecs),
4490 TOJSON_IMPL(reduceImmediacy)
4493 static void from_json(
const nlohmann::json& j, Presence& p)
4496 getOptional<Presence::Format_t>(
"format", p.format, j, Presence::Format_t::pfEngage);
4497 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 30);
4498 getOptional<bool>(
"listenOnly", p.listenOnly, j,
false);
4499 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 5);
4500 getOptional<bool>(
"reduceImmediacy", p.reduceImmediacy, j,
false);
4505 JSON_SERIALIZED_CLASS(Advertising)
4517 IMPLEMENT_JSON_SERIALIZATION()
4539 alwaysAdvertise =
false;
4543 static void to_json(nlohmann::json& j,
const Advertising& p)
4546 TOJSON_IMPL(enabled),
4547 TOJSON_IMPL(intervalMs),
4548 TOJSON_IMPL(alwaysAdvertise)
4551 static void from_json(
const nlohmann::json& j, Advertising& p)
4554 getOptional(
"enabled", p.enabled, j,
false);
4555 getOptional<int>(
"intervalMs", p.intervalMs, j, 20000);
4556 getOptional<bool>(
"alwaysAdvertise", p.alwaysAdvertise, j,
false);
4560 JSON_SERIALIZED_CLASS(GroupPriorityTranslation)
4572 IMPLEMENT_JSON_SERIALIZATION()
4598 static void to_json(nlohmann::json& j,
const GroupPriorityTranslation& p)
4603 TOJSON_IMPL(priority)
4606 static void from_json(
const nlohmann::json& j, GroupPriorityTranslation& p)
4609 j.at(
"rx").get_to(p.rx);
4610 j.at(
"tx").get_to(p.tx);
4611 FROMJSON_IMPL(priority,
int, 0);
4615 JSON_SERIALIZED_CLASS(GroupTimeline)
4629 IMPLEMENT_JSON_SERIALIZATION()
4648 maxAudioTimeMs = 30000;
4653 static void to_json(nlohmann::json& j,
const GroupTimeline& p)
4656 TOJSON_IMPL(enabled),
4657 TOJSON_IMPL(maxAudioTimeMs),
4658 TOJSON_IMPL(recordAudio)
4661 static void from_json(
const nlohmann::json& j, GroupTimeline& p)
4664 getOptional(
"enabled", p.enabled, j,
true);
4665 getOptional<int>(
"maxAudioTimeMs", p.maxAudioTimeMs, j, 30000);
4666 getOptional(
"recordAudio", p.recordAudio, j,
true);
4769 IMPLEMENT_JSON_SERIALIZATION()
4791 static void to_json(nlohmann::json& j,
const GroupAppTransport& p)
4794 TOJSON_IMPL(enabled),
4798 static void from_json(
const nlohmann::json& j, GroupAppTransport& p)
4801 getOptional<bool>(
"enabled", p.enabled, j,
false);
4802 getOptional<std::string>(
"id", p.id, j);
4806 JSON_SERIALIZED_CLASS(RtpProfile)
4818 IMPLEMENT_JSON_SERIALIZATION()
4836 jmReleaseOnTxEnd = 2
4899 jitterMaxMs = 10000;
4901 jitterMaxFactor = 8;
4902 jitterTrimPercentage = 10;
4903 jitterUnderrunReductionThresholdMs = 1500;
4904 jitterUnderrunReductionAger = 100;
4905 latePacketSequenceRange = 5;
4906 latePacketTimestampRangeMs = 2000;
4907 inboundProcessorInactivityMs = 500;
4908 jitterForceTrimAtMs = 0;
4909 rtcpPresenceTimeoutMs = 45000;
4910 jitterMaxExceededClipPerc = 10;
4911 jitterMaxExceededClipHangMs = 1500;
4912 zombieLifetimeMs = 15000;
4913 jitterMaxTrimMs = 250;
4914 signalledInboundProcessorInactivityMs = (inboundProcessorInactivityMs * 4);
4918 static void to_json(nlohmann::json& j,
const RtpProfile& p)
4922 TOJSON_IMPL(jitterMaxMs),
4923 TOJSON_IMPL(inboundProcessorInactivityMs),
4924 TOJSON_IMPL(jitterMinMs),
4925 TOJSON_IMPL(jitterMaxFactor),
4926 TOJSON_IMPL(jitterTrimPercentage),
4927 TOJSON_IMPL(jitterUnderrunReductionThresholdMs),
4928 TOJSON_IMPL(jitterUnderrunReductionAger),
4929 TOJSON_IMPL(latePacketSequenceRange),
4930 TOJSON_IMPL(latePacketTimestampRangeMs),
4931 TOJSON_IMPL(inboundProcessorInactivityMs),
4932 TOJSON_IMPL(jitterForceTrimAtMs),
4933 TOJSON_IMPL(jitterMaxExceededClipPerc),
4934 TOJSON_IMPL(jitterMaxExceededClipHangMs),
4935 TOJSON_IMPL(zombieLifetimeMs),
4936 TOJSON_IMPL(jitterMaxTrimMs),
4937 TOJSON_IMPL(signalledInboundProcessorInactivityMs)
4940 static void from_json(
const nlohmann::json& j, RtpProfile& p)
4943 FROMJSON_IMPL(mode, RtpProfile::JitterMode_t, RtpProfile::JitterMode_t::jmStandard);
4944 FROMJSON_IMPL(jitterMaxMs,
int, 10000);
4945 FROMJSON_IMPL(jitterMinMs,
int, 20);
4946 FROMJSON_IMPL(jitterMaxFactor,
int, 8);
4947 FROMJSON_IMPL(jitterTrimPercentage,
int, 10);
4948 FROMJSON_IMPL(jitterUnderrunReductionThresholdMs,
int, 1500);
4949 FROMJSON_IMPL(jitterUnderrunReductionAger,
int, 100);
4950 FROMJSON_IMPL(latePacketSequenceRange,
int, 5);
4951 FROMJSON_IMPL(latePacketTimestampRangeMs,
int, 2000);
4952 FROMJSON_IMPL(inboundProcessorInactivityMs,
int, 500);
4953 FROMJSON_IMPL(jitterForceTrimAtMs,
int, 0);
4954 FROMJSON_IMPL(rtcpPresenceTimeoutMs,
int, 45000);
4955 FROMJSON_IMPL(jitterMaxExceededClipPerc,
int, 10);
4956 FROMJSON_IMPL(jitterMaxExceededClipHangMs,
int, 1500);
4957 FROMJSON_IMPL(zombieLifetimeMs,
int, 15000);
4958 FROMJSON_IMPL(jitterMaxTrimMs,
int, 250);
4959 FROMJSON_IMPL(signalledInboundProcessorInactivityMs,
int, (p.inboundProcessorInactivityMs * 4));
4963 JSON_SERIALIZED_CLASS(Tls)
4975 IMPLEMENT_JSON_SERIALIZATION()
4976 IMPLEMENT_JSON_DOCUMENTATION(
Tls)
5006 allowSelfSignedCertificates =
false;
5007 caCertificates.clear();
5008 subjectRestrictions.clear();
5009 issuerRestrictions.clear();
5014 static void to_json(nlohmann::json& j,
const Tls& p)
5017 TOJSON_IMPL(verifyPeers),
5018 TOJSON_IMPL(allowSelfSignedCertificates),
5019 TOJSON_IMPL(caCertificates),
5020 TOJSON_IMPL(subjectRestrictions),
5021 TOJSON_IMPL(issuerRestrictions),
5022 TOJSON_IMPL(crlSerials)
5025 static void from_json(
const nlohmann::json& j, Tls& p)
5028 getOptional<bool>(
"verifyPeers", p.verifyPeers, j,
true);
5029 getOptional<bool>(
"allowSelfSignedCertificates", p.allowSelfSignedCertificates, j,
false);
5030 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
5031 getOptional<StringRestrictionList>(
"subjectRestrictions", p.subjectRestrictions, j);
5032 getOptional<StringRestrictionList>(
"issuerRestrictions", p.issuerRestrictions, j);
5033 getOptional<std::vector<std::string>>(
"crlSerials", p.crlSerials, j);
5037 JSON_SERIALIZED_CLASS(RangerPackets)
5051 IMPLEMENT_JSON_SERIALIZATION()
5072 virtual void initForDocumenting()
5077 static void to_json(nlohmann::json& j,
const RangerPackets& p)
5080 TOJSON_IMPL(hangTimerSecs),
5084 static void from_json(
const nlohmann::json& j, RangerPackets& p)
5087 getOptional<int>(
"hangTimerSecs", p.hangTimerSecs, j, 11);
5088 getOptional<int>(
"count", p.count, j, 5);
5092 JSON_SERIALIZED_CLASS(Source)
5106 IMPLEMENT_JSON_SERIALIZATION()
5107 IMPLEMENT_JSON_DOCUMENTATION(
Source)
5114 uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
5120 uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
5130 memset(_internal_binary_nodeId, 0,
sizeof(_internal_binary_nodeId));
5133 memset(_internal_binary_alias, 0,
sizeof(_internal_binary_alias));
5136 virtual void initForDocumenting()
5141 static void to_json(nlohmann::json& j,
const Source& p)
5144 TOJSON_IMPL(nodeId),
5148 static void from_json(
const nlohmann::json& j, Source& p)
5151 FROMJSON_IMPL_SIMPLE(nodeId);
5152 FROMJSON_IMPL_SIMPLE(alias);
5156 JSON_SERIALIZED_CLASS(GroupBridgeTargetOutputDetail)
5170 IMPLEMENT_JSON_SERIALIZATION()
5207 mode = BridgingOpMode_t::bomRaw;
5208 mixedStreamTxParams.clear();
5211 virtual void initForDocumenting()
5217 static void to_json(nlohmann::json& j,
const GroupBridgeTargetOutputDetail& p)
5221 TOJSON_IMPL(mixedStreamTxParams)
5224 static void from_json(
const nlohmann::json& j, GroupBridgeTargetOutputDetail& p)
5227 FROMJSON_IMPL_SIMPLE(mode);
5228 FROMJSON_IMPL_SIMPLE(mixedStreamTxParams);
5232 JSON_SERIALIZED_CLASS(GroupDefaultAudioPriority)
5246 IMPLEMENT_JSON_SERIALIZATION()
5267 virtual void initForDocumenting()
5273 static void to_json(nlohmann::json& j,
const GroupDefaultAudioPriority& p)
5280 static void from_json(
const nlohmann::json& j, GroupDefaultAudioPriority& p)
5283 FROMJSON_IMPL_SIMPLE(tx);
5284 FROMJSON_IMPL_SIMPLE(rx);
5288 JSON_SERIALIZED_CLASS(Group)
5301 IMPLEMENT_JSON_SERIALIZATION()
5302 IMPLEMENT_JSON_DOCUMENTATION(
Group)
5325 iagpAnonymousAlias = 0,
5329 } InboundAliasGenerationPolicy_t;
5504 bridgeTargetOutputDetail.clear();
5505 defaultAudioPriority.clear();
5509 interfaceName.clear();
5515 cryptoPassword.clear();
5519 rallypoints.clear();
5520 rallypointCluster.clear();
5525 blockAdvertising =
false;
5531 enableMulticastFailover =
false;
5532 multicastFailoverSecs = 10;
5534 rtcpPresenceRx.clear();
5536 presenceGroupAffinities.clear();
5537 disablePacketEvents =
false;
5539 rfc4733RtpPayloadId = 0;
5540 inboundRtpPayloadTypeTranslations.clear();
5541 priorityTranslation.clear();
5543 stickyTidHangSecs = 10;
5544 anonymousAlias.clear();
5547 appTransport.clear();
5548 allowLoopback =
false;
5551 rangerPackets.clear();
5553 _wasDeserialized_rtpProfile =
false;
5555 txImpairment.clear();
5556 rxImpairment.clear();
5558 specializerAffinities.clear();
5562 ignoreSources.clear();
5564 languageCode.clear();
5571 inboundAliasGenerationPolicy = iagpAnonymousAlias;
5574 ignoreAudioTraffic =
false;
5578 static void to_json(nlohmann::json& j,
const Group& p)
5582 TOJSON_IMPL(bridgeTargetOutputDetail),
5583 TOJSON_IMPL(defaultAudioPriority),
5586 TOJSON_IMPL(spokenName),
5587 TOJSON_IMPL(interfaceName),
5590 TOJSON_IMPL(txOptions),
5591 TOJSON_IMPL(txAudio),
5592 TOJSON_IMPL(presence),
5593 TOJSON_IMPL(cryptoPassword),
5602 TOJSON_IMPL(timeline),
5603 TOJSON_IMPL(blockAdvertising),
5604 TOJSON_IMPL(source),
5605 TOJSON_IMPL(maxRxSecs),
5606 TOJSON_IMPL(enableMulticastFailover),
5607 TOJSON_IMPL(multicastFailoverSecs),
5608 TOJSON_IMPL(rtcpPresenceRx),
5609 TOJSON_IMPL(presenceGroupAffinities),
5610 TOJSON_IMPL(disablePacketEvents),
5611 TOJSON_IMPL(rfc4733RtpPayloadId),
5612 TOJSON_IMPL(inboundRtpPayloadTypeTranslations),
5613 TOJSON_IMPL(priorityTranslation),
5614 TOJSON_IMPL(stickyTidHangSecs),
5615 TOJSON_IMPL(anonymousAlias),
5616 TOJSON_IMPL(lbCrypto),
5617 TOJSON_IMPL(appTransport),
5618 TOJSON_IMPL(allowLoopback),
5619 TOJSON_IMPL(rangerPackets),
5621 TOJSON_IMPL(txImpairment),
5622 TOJSON_IMPL(rxImpairment),
5624 TOJSON_IMPL(specializerAffinities),
5626 TOJSON_IMPL(securityLevel),
5628 TOJSON_IMPL(ignoreSources),
5630 TOJSON_IMPL(languageCode),
5631 TOJSON_IMPL(synVoice),
5633 TOJSON_IMPL(rxCapture),
5634 TOJSON_IMPL(txCapture),
5636 TOJSON_IMPL(blobRtpPayloadType),
5638 TOJSON_IMPL(inboundAliasGenerationPolicy),
5640 TOJSON_IMPL(gateIn),
5642 TOJSON_IMPL(ignoreAudioTraffic)
5648 if(p._wasDeserialized_rtpProfile || p.isDocumenting())
5650 j[
"rtpProfile"] = p.rtpProfile;
5653 if(p.isDocumenting())
5655 j[
"rallypointCluster"] = p.rallypointCluster;
5656 j[
"rallypoints"] = p.rallypoints;
5661 if(!p.rallypointCluster.rallypoints.empty())
5663 j[
"rallypointCluster"] = p.rallypointCluster;
5665 else if(!p.rallypoints.empty())
5667 j[
"rallypoints"] = p.rallypoints;
5671 static void from_json(
const nlohmann::json& j, Group& p)
5674 j.at(
"type").get_to(p.type);
5675 getOptional<GroupBridgeTargetOutputDetail>(
"bridgeTargetOutputDetail", p.bridgeTargetOutputDetail, j);
5676 j.at(
"id").get_to(p.id);
5677 getOptional<std::string>(
"name", p.name, j);
5678 getOptional<std::string>(
"spokenName", p.spokenName, j);
5679 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
5680 getOptional<NetworkAddress>(
"rx", p.rx, j);
5681 getOptional<NetworkAddress>(
"tx", p.tx, j);
5682 getOptional<NetworkTxOptions>(
"txOptions", p.txOptions, j);
5683 getOptional<std::string>(
"cryptoPassword", p.cryptoPassword, j);
5684 getOptional<std::string>(
"alias", p.alias, j);
5685 getOptional<TxAudio>(
"txAudio", p.txAudio, j);
5686 getOptional<Presence>(
"presence", p.presence, j);
5687 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
5688 getOptional<RallypointCluster>(
"rallypointCluster", p.rallypointCluster, j);
5689 getOptional<Audio>(
"audio", p.audio, j);
5690 getOptional<GroupTimeline>(
"timeline", p.timeline, j);
5691 getOptional<bool>(
"blockAdvertising", p.blockAdvertising, j,
false);
5692 getOptional<std::string>(
"source", p.source, j);
5693 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
5694 getOptional<bool>(
"enableMulticastFailover", p.enableMulticastFailover, j,
false);
5695 getOptional<int>(
"multicastFailoverSecs", p.multicastFailoverSecs, j, 10);
5696 getOptional<NetworkAddress>(
"rtcpPresenceRx", p.rtcpPresenceRx, j);
5697 getOptional<std::vector<std::string>>(
"presenceGroupAffinities", p.presenceGroupAffinities, j);
5698 getOptional<bool>(
"disablePacketEvents", p.disablePacketEvents, j,
false);
5699 getOptional<int>(
"rfc4733RtpPayloadId", p.rfc4733RtpPayloadId, j, 0);
5700 getOptional<std::vector<RtpPayloadTypeTranslation>>(
"inboundRtpPayloadTypeTranslations", p.inboundRtpPayloadTypeTranslations, j);
5701 getOptional<GroupPriorityTranslation>(
"priorityTranslation", p.priorityTranslation, j);
5702 getOptional<GroupDefaultAudioPriority>(
"defaultAudioPriority", p.defaultAudioPriority, j);
5703 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
5704 getOptional<std::string>(
"anonymousAlias", p.anonymousAlias, j);
5705 getOptional<bool>(
"lbCrypto", p.lbCrypto, j,
false);
5706 getOptional<GroupAppTransport>(
"appTransport", p.appTransport, j);
5707 getOptional<bool>(
"allowLoopback", p.allowLoopback, j,
false);
5708 getOptionalWithIndicator<RtpProfile>(
"rtpProfile", p.rtpProfile, j, &p._wasDeserialized_rtpProfile);
5709 getOptional<RangerPackets>(
"rangerPackets", p.rangerPackets, j);
5710 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
5711 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
5712 getOptional<std::vector<uint16_t>>(
"specializerAffinities", p.specializerAffinities, j);
5713 getOptional<uint32_t>(
"securityLevel", p.securityLevel, j, 0);
5714 getOptional<std::vector<Source>>(
"ignoreSources", p.ignoreSources, j);
5715 getOptional<std::string>(
"languageCode", p.languageCode, j);
5716 getOptional<std::string>(
"synVoice", p.synVoice, j);
5718 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
5719 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
5723 getOptional<Group::InboundAliasGenerationPolicy_t>(
"inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
5725 getOptional<AudioGate>(
"gateIn", p.gateIn, j);
5727 getOptional<bool>(
"ignoreAudioTraffic", p.ignoreAudioTraffic, j,
false);
5729 FROMJSON_BASE_IMPL();
5734 JSON_SERIALIZED_CLASS(Mission)
5737 IMPLEMENT_JSON_SERIALIZATION()
5738 IMPLEMENT_JSON_DOCUMENTATION(
Mission)
5743 std::vector<Group> groups;
5744 std::chrono::system_clock::time_point begins;
5745 std::chrono::system_clock::time_point ends;
5746 std::string certStoreId;
5747 int multicastFailoverPolicy;
5755 certStoreId.clear();
5756 multicastFailoverPolicy = 0;
5761 static void to_json(nlohmann::json& j,
const Mission& p)
5766 TOJSON_IMPL(groups),
5767 TOJSON_IMPL(certStoreId),
5768 TOJSON_IMPL(multicastFailoverPolicy),
5769 TOJSON_IMPL(rallypoint)
5773 static void from_json(
const nlohmann::json& j, Mission& p)
5776 j.at(
"id").get_to(p.id);
5777 j.at(
"name").get_to(p.name);
5782 j.at(
"groups").get_to(p.groups);
5789 FROMJSON_IMPL(certStoreId, std::string, EMPTY_STRING);
5790 FROMJSON_IMPL(multicastFailoverPolicy,
int, 0);
5791 getOptional<Rallypoint>(
"rallypoint", p.rallypoint, j);
5795 JSON_SERIALIZED_CLASS(LicenseDescriptor)
5807 IMPLEMENT_JSON_SERIALIZATION()
5816 static const int STATUS_OK = 0;
5817 static const int ERR_NULL_ENTITLEMENT_KEY = -1;
5818 static const int ERR_NULL_LICENSE_KEY = -2;
5819 static const int ERR_INVALID_LICENSE_KEY_LEN = -3;
5820 static const int ERR_LICENSE_KEY_VERIFICATION_FAILURE = -4;
5821 static const int ERR_ACTIVATION_CODE_VERIFICATION_FAILURE = -5;
5822 static const int ERR_INVALID_EXPIRATION_DATE = -6;
5823 static const int ERR_GENERAL_FAILURE = -7;
5824 static const int ERR_NOT_INITIALIZED = -8;
5825 static const int ERR_REQUIRES_ACTIVATION = -9;
5826 static const int ERR_LICENSE_NOT_SUITED_FOR_ACTIVATION = -10;
5834 static const uint8_t LIC_CARGO_FLAG_LIMIT_TO_FEATURES = 0x01;
5901 entitlement.clear();
5903 activationCode.clear();
5906 expiresFormatted.clear();
5911 status = ERR_NOT_INITIALIZED;
5912 manufacturerId.clear();
5913 activationHmac.clear();
5917 static void to_json(nlohmann::json& j,
const LicenseDescriptor& p)
5921 {
"entitlement",
"*entitlement*"},
5923 TOJSON_IMPL(activationCode),
5925 TOJSON_IMPL(expires),
5926 TOJSON_IMPL(expiresFormatted),
5928 TOJSON_IMPL(deviceId),
5929 TOJSON_IMPL(status),
5931 {
"manufacturerId",
"*manufacturerId*"},
5933 TOJSON_IMPL(cargoFlags),
5934 TOJSON_IMPL(activationHmac)
5938 static void from_json(
const nlohmann::json& j, LicenseDescriptor& p)
5941 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
5942 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5943 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
5944 FROMJSON_IMPL(type,
int, 0);
5945 FROMJSON_IMPL(expires, time_t, 0);
5946 FROMJSON_IMPL(expiresFormatted, std::string, EMPTY_STRING);
5947 FROMJSON_IMPL(flags, uint32_t, 0);
5948 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
5949 FROMJSON_IMPL(status,
int, LicenseDescriptor::ERR_NOT_INITIALIZED);
5950 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
5951 FROMJSON_IMPL(cargo, std::string, EMPTY_STRING);
5952 FROMJSON_IMPL(cargoFlags, uint8_t, 0);
5953 FROMJSON_IMPL(activationHmac, std::string, EMPTY_STRING);
5958 JSON_SERIALIZED_CLASS(EngineNetworkingRpUdpStreaming)
5972 IMPLEMENT_JSON_SERIALIZATION()
6000 keepaliveIntervalSecs = 15;
6001 priority = TxPriority_t::priVoice;
6005 virtual void initForDocumenting()
6010 static void to_json(nlohmann::json& j,
const EngineNetworkingRpUdpStreaming& p)
6013 TOJSON_IMPL(enabled),
6015 TOJSON_IMPL(keepaliveIntervalSecs),
6016 TOJSON_IMPL(priority),
6020 static void from_json(
const nlohmann::json& j, EngineNetworkingRpUdpStreaming& p)
6023 getOptional<bool>(
"enabled", p.enabled, j,
false);
6024 getOptional<int>(
"port", p.port, j, 0);
6025 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
6026 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
6027 getOptional<int>(
"ttl", p.ttl, j, 64);
6031 JSON_SERIALIZED_CLASS(EnginePolicyNetworking)
6042 IMPLEMENT_JSON_SERIALIZATION()
6081 multicastRejoinSecs = 8;
6082 rallypointRtTestIntervalMs = 60000;
6083 logRtpJitterBufferStats =
false;
6084 preventMulticastFailover =
false;
6085 addressResolutionPolicy = AddressResolutionPolicy_t::arpIpv6ThenIpv4;
6086 requireMulticast =
true;
6087 rpUdpStreaming.clear();
6092 static void to_json(nlohmann::json& j,
const EnginePolicyNetworking& p)
6095 TOJSON_IMPL(defaultNic),
6096 TOJSON_IMPL(multicastRejoinSecs),
6098 TOJSON_IMPL(rallypointRtTestIntervalMs),
6099 TOJSON_IMPL(logRtpJitterBufferStats),
6100 TOJSON_IMPL(preventMulticastFailover),
6101 TOJSON_IMPL(requireMulticast),
6102 TOJSON_IMPL(rpUdpStreaming),
6103 TOJSON_IMPL(rtpProfile),
6104 TOJSON_IMPL(addressResolutionPolicy)
6107 static void from_json(
const nlohmann::json& j, EnginePolicyNetworking& p)
6110 FROMJSON_IMPL(defaultNic, std::string, EMPTY_STRING);
6111 FROMJSON_IMPL(multicastRejoinSecs,
int, 8);
6112 FROMJSON_IMPL(rallypointRtTestIntervalMs,
int, 60000);
6113 FROMJSON_IMPL(logRtpJitterBufferStats,
bool,
false);
6114 FROMJSON_IMPL(preventMulticastFailover,
bool,
false);
6115 FROMJSON_IMPL(requireMulticast,
bool,
true);
6116 getOptional<EngineNetworkingRpUdpStreaming>(
"rpUdpStreaming", p.rpUdpStreaming, j);
6117 getOptional<RtpProfile>(
"rtpProfile", p.rtpProfile, j);
6118 getOptional<AddressResolutionPolicy_t>(
"addressResolutionPolicy", p.addressResolutionPolicy, j, AddressResolutionPolicy_t::arpIpv6ThenIpv4);
6122 JSON_SERIALIZED_CLASS(Aec)
6134 IMPLEMENT_JSON_SERIALIZATION()
6135 IMPLEMENT_JSON_DOCUMENTATION(
Aec)
6190 static void to_json(nlohmann::json& j,
const Aec& p)
6193 TOJSON_IMPL(enabled),
6195 TOJSON_IMPL(speakerTailMs),
6199 static void from_json(
const nlohmann::json& j, Aec& p)
6202 FROMJSON_IMPL(enabled,
bool,
false);
6203 FROMJSON_IMPL(mode, Aec::Mode_t, Aec::Mode_t::aecmDefault);
6204 FROMJSON_IMPL(speakerTailMs,
int, 60);
6205 FROMJSON_IMPL(cng,
bool,
true);
6209 JSON_SERIALIZED_CLASS(Vad)
6221 IMPLEMENT_JSON_SERIALIZATION()
6222 IMPLEMENT_JSON_DOCUMENTATION(
Vad)
6242 vamVeryAggressive = 3
6263 static void to_json(nlohmann::json& j,
const Vad& p)
6266 TOJSON_IMPL(enabled),
6270 static void from_json(
const nlohmann::json& j, Vad& p)
6273 FROMJSON_IMPL(enabled,
bool,
false);
6274 FROMJSON_IMPL(mode, Vad::Mode_t, Vad::Mode_t::vamDefault);
6278 JSON_SERIALIZED_CLASS(Bridge)
6290 IMPLEMENT_JSON_SERIALIZATION()
6291 IMPLEMENT_JSON_DOCUMENTATION(
Bridge)
6327 static void to_json(nlohmann::json& j,
const Bridge& p)
6332 TOJSON_IMPL(groups),
6333 TOJSON_IMPL(enabled),
6337 static void from_json(
const nlohmann::json& j, Bridge& p)
6340 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
6341 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
6342 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
6343 FROMJSON_IMPL(enabled,
bool,
true);
6344 FROMJSON_IMPL(active,
bool,
true);
6348 JSON_SERIALIZED_CLASS(AndroidAudio)
6360 IMPLEMENT_JSON_SERIALIZATION()
6364 constexpr static int INVALID_SESSION_ID = -9999;
6425 performanceMode = 12;
6429 sessionId = AndroidAudio::INVALID_SESSION_ID;
6434 static void to_json(nlohmann::json& j,
const AndroidAudio& p)
6438 TOJSON_IMPL(sharingMode),
6439 TOJSON_IMPL(performanceMode),
6441 TOJSON_IMPL(contentType),
6442 TOJSON_IMPL(inputPreset),
6443 TOJSON_IMPL(sessionId),
6444 TOJSON_IMPL(engineMode)
6447 static void from_json(
const nlohmann::json& j, AndroidAudio& p)
6450 FROMJSON_IMPL(api,
int, 0);
6451 FROMJSON_IMPL(sharingMode,
int, 0);
6452 FROMJSON_IMPL(performanceMode,
int, 12);
6453 FROMJSON_IMPL(usage,
int, 2);
6454 FROMJSON_IMPL(contentType,
int, 1);
6455 FROMJSON_IMPL(inputPreset,
int, 7);
6456 FROMJSON_IMPL(sessionId,
int, AndroidAudio::INVALID_SESSION_ID);
6457 FROMJSON_IMPL(engineMode,
int, 0);
6461 JSON_SERIALIZED_CLASS(Denoiser)
6474 IMPLEMENT_JSON_SERIALIZATION()
6475 IMPLEMENT_JSON_DOCUMENTATION(
Denoiser)
6500 static void to_json(nlohmann::json& j,
const Denoiser& p)
6505 TOJSON_IMPL(vadGate)
6508 static void from_json(
const nlohmann::json& j, Denoiser& p)
6511 FROMJSON_IMPL(mix,
float, 1.0f);
6512 FROMJSON_IMPL(model, std::string,
"");
6513 FROMJSON_IMPL(vadGate,
float, 0.0f);
6517 JSON_SERIALIZED_CLASS(EnginePolicyAudio)
6529 IMPLEMENT_JSON_SERIALIZATION()
6590 hardwareEnabled =
true;
6591 internalRate = 16000;
6592 internalChannels = 2;
6599 denoiseInput =
false;
6600 denoiseOutput =
false;
6602 saveInputPcm =
false;
6603 saveOutputPcm =
false;
6608 static void to_json(nlohmann::json& j,
const EnginePolicyAudio& p)
6611 TOJSON_IMPL(enabled),
6612 TOJSON_IMPL(hardwareEnabled),
6613 TOJSON_IMPL(internalRate),
6614 TOJSON_IMPL(internalChannels),
6615 TOJSON_IMPL(muteTxOnTx),
6618 TOJSON_IMPL(android),
6619 TOJSON_IMPL(inputAgc),
6620 TOJSON_IMPL(outputAgc),
6621 TOJSON_IMPL(denoiseInput),
6622 TOJSON_IMPL(denoiseOutput),
6623 TOJSON_IMPL(denoiser),
6624 TOJSON_IMPL(saveInputPcm),
6625 TOJSON_IMPL(saveOutputPcm),
6626 TOJSON_IMPL(registry)
6629 static void from_json(
const nlohmann::json& j, EnginePolicyAudio& p)
6632 getOptional<bool>(
"enabled", p.enabled, j,
true);
6633 getOptional<bool>(
"hardwareEnabled", p.hardwareEnabled, j,
true);
6634 FROMJSON_IMPL(internalRate,
int, 16000);
6635 FROMJSON_IMPL(internalChannels,
int, 2);
6637 FROMJSON_IMPL(muteTxOnTx,
bool,
false);
6638 getOptional<Aec>(
"aec", p.aec, j);
6639 getOptional<Vad>(
"vad", p.vad, j);
6640 getOptional<AndroidAudio>(
"android", p.android, j);
6641 getOptional<Agc>(
"inputAgc", p.inputAgc, j);
6642 getOptional<Agc>(
"outputAgc", p.outputAgc, j);
6643 FROMJSON_IMPL(denoiseInput,
bool,
false);
6644 FROMJSON_IMPL(denoiseOutput,
bool,
false);
6645 getOptional<Denoiser>(
"denoiser", p.denoiser, j);
6646 FROMJSON_IMPL(saveInputPcm,
bool,
false);
6647 FROMJSON_IMPL(saveOutputPcm,
bool,
false);
6648 getOptional<AudioRegistry>(
"registry", p.registry, j);
6652 JSON_SERIALIZED_CLASS(SecurityCertificate)
6664 IMPLEMENT_JSON_SERIALIZATION()
6686 certificate.clear();
6691 static void to_json(nlohmann::json& j,
const SecurityCertificate& p)
6694 TOJSON_IMPL(certificate),
6698 static void from_json(
const nlohmann::json& j, SecurityCertificate& p)
6701 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6702 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6707 JSON_SERIALIZED_CLASS(EnginePolicySecurity)
6720 IMPLEMENT_JSON_SERIALIZATION()
6753 certificate.clear();
6754 caCertificates.clear();
6758 static void to_json(nlohmann::json& j,
const EnginePolicySecurity& p)
6761 TOJSON_IMPL(certificate),
6762 TOJSON_IMPL(caCertificates)
6765 static void from_json(
const nlohmann::json& j, EnginePolicySecurity& p)
6768 getOptional(
"certificate", p.certificate, j);
6769 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
6773 JSON_SERIALIZED_CLASS(EnginePolicyLogging)
6785 IMPLEMENT_JSON_SERIALIZATION()
6818 enableSyslog =
false;
6822 static void to_json(nlohmann::json& j,
const EnginePolicyLogging& p)
6825 TOJSON_IMPL(maxLevel),
6826 TOJSON_IMPL(enableSyslog)
6829 static void from_json(
const nlohmann::json& j, EnginePolicyLogging& p)
6832 getOptional(
"maxLevel", p.maxLevel, j, 4);
6833 getOptional(
"enableSyslog", p.enableSyslog, j);
6838 JSON_SERIALIZED_CLASS(EnginePolicyDatabase)
6841 IMPLEMENT_JSON_SERIALIZATION()
6852 DatabaseType_t type;
6853 std::string fixedFileName;
6854 bool forceMaintenance;
6864 type = DatabaseType_t::dbtFixedMemory;
6865 fixedFileName.clear();
6866 forceMaintenance =
false;
6867 reclaimSpace =
false;
6875 TOJSON_IMPL(fixedFileName),
6876 TOJSON_IMPL(forceMaintenance),
6877 TOJSON_IMPL(reclaimSpace)
6880 static void from_json(
const nlohmann::json& j, EnginePolicyDatabase& p)
6883 FROMJSON_IMPL(type, EnginePolicyDatabase::DatabaseType_t, EnginePolicyDatabase::DatabaseType_t::dbtFixedMemory);
6884 FROMJSON_IMPL(fixedFileName, std::string, EMPTY_STRING);
6885 FROMJSON_IMPL(forceMaintenance,
bool,
false);
6886 FROMJSON_IMPL(reclaimSpace,
bool,
false);
6891 JSON_SERIALIZED_CLASS(SecureSignature)
6901 IMPLEMENT_JSON_SERIALIZATION()
6922 certificate.clear();
6928 static void to_json(nlohmann::json& j,
const SecureSignature& p)
6931 TOJSON_IMPL(certificate),
6933 TOJSON_IMPL(signature)
6936 static void from_json(
const nlohmann::json& j, SecureSignature& p)
6939 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6941 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
6945 JSON_SERIALIZED_CLASS(NamedAudioDevice)
6948 IMPLEMENT_JSON_SERIALIZATION()
6953 std::string manufacturer;
6956 std::string serialNumber;
6969 manufacturer.clear();
6972 serialNumber.clear();
6983 TOJSON_IMPL(manufacturer),
6986 TOJSON_IMPL(serialNumber),
6989 TOJSON_IMPL(isDefault),
6992 static void from_json(
const nlohmann::json& j, NamedAudioDevice& p)
6995 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6996 getOptional<std::string>(
"manufacturer", p.manufacturer, j, EMPTY_STRING);
6997 getOptional<std::string>(
"model", p.model, j, EMPTY_STRING);
6998 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
6999 getOptional<std::string>(
"serialNumber", p.serialNumber, j, EMPTY_STRING);
7000 getOptional<std::string>(
"type", p.type, j, EMPTY_STRING);
7001 getOptional<std::string>(
"extra", p.extra, j, EMPTY_STRING);
7002 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
7007 JSON_SERIALIZED_CLASS(EnginePolicyNamedAudioDevices)
7010 IMPLEMENT_JSON_SERIALIZATION()
7014 std::vector<NamedAudioDevice> inputs;
7015 std::vector<NamedAudioDevice> outputs;
7032 TOJSON_IMPL(inputs),
7033 TOJSON_IMPL(outputs)
7036 static void from_json(
const nlohmann::json& j, EnginePolicyNamedAudioDevices& p)
7039 getOptional<std::vector<NamedAudioDevice>>(
"inputs", p.inputs, j);
7040 getOptional<std::vector<NamedAudioDevice>>(
"outputs", p.outputs, j);
7044 JSON_SERIALIZED_CLASS(Licensing)
7058 IMPLEMENT_JSON_SERIALIZATION()
7085 entitlement.clear();
7087 activationCode.clear();
7089 manufacturerId.clear();
7093 static void to_json(nlohmann::json& j,
const Licensing& p)
7096 TOJSON_IMPL(entitlement),
7098 TOJSON_IMPL(activationCode),
7099 TOJSON_IMPL(deviceId),
7100 TOJSON_IMPL(manufacturerId)
7103 static void from_json(
const nlohmann::json& j, Licensing& p)
7106 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
7107 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
7108 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
7109 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
7110 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
7114 JSON_SERIALIZED_CLASS(DiscoveryMagellan)
7126 IMPLEMENT_JSON_SERIALIZATION()
7151 interfaceName.clear();
7157 static void to_json(nlohmann::json& j,
const DiscoveryMagellan& p)
7160 TOJSON_IMPL(enabled),
7161 TOJSON_IMPL(interfaceName),
7162 TOJSON_IMPL(security),
7166 static void from_json(
const nlohmann::json& j, DiscoveryMagellan& p)
7169 getOptional(
"enabled", p.enabled, j,
false);
7170 getOptional<Tls>(
"tls", p.tls, j);
7171 getOptional<SecurityCertificate>(
"security", p.security, j);
7172 FROMJSON_IMPL(interfaceName, std::string, EMPTY_STRING);
7176 JSON_SERIALIZED_CLASS(DiscoverySsdp)
7188 IMPLEMENT_JSON_SERIALIZATION()
7219 interfaceName.clear();
7221 searchTerms.clear();
7222 ageTimeoutMs = 30000;
7223 advertising.clear();
7227 static void to_json(nlohmann::json& j,
const DiscoverySsdp& p)
7230 TOJSON_IMPL(enabled),
7231 TOJSON_IMPL(interfaceName),
7232 TOJSON_IMPL(address),
7233 TOJSON_IMPL(searchTerms),
7234 TOJSON_IMPL(ageTimeoutMs),
7235 TOJSON_IMPL(advertising)
7238 static void from_json(
const nlohmann::json& j, DiscoverySsdp& p)
7241 getOptional(
"enabled", p.enabled, j,
false);
7242 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7244 getOptional<NetworkAddress>(
"address", p.address, j);
7245 if(p.address.address.empty())
7247 p.address.address =
"255.255.255.255";
7249 if(p.address.port <= 0)
7251 p.address.port = 1900;
7254 getOptional<std::vector<std::string>>(
"searchTerms", p.searchTerms, j);
7255 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7256 getOptional<Advertising>(
"advertising", p.advertising, j);
7260 JSON_SERIALIZED_CLASS(DiscoverySap)
7272 IMPLEMENT_JSON_SERIALIZATION()
7299 interfaceName.clear();
7301 ageTimeoutMs = 30000;
7302 advertising.clear();
7306 static void to_json(nlohmann::json& j,
const DiscoverySap& p)
7309 TOJSON_IMPL(enabled),
7310 TOJSON_IMPL(interfaceName),
7311 TOJSON_IMPL(address),
7312 TOJSON_IMPL(ageTimeoutMs),
7313 TOJSON_IMPL(advertising)
7316 static void from_json(
const nlohmann::json& j, DiscoverySap& p)
7319 getOptional(
"enabled", p.enabled, j,
false);
7320 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7321 getOptional<NetworkAddress>(
"address", p.address, j);
7322 if(p.address.address.empty())
7324 p.address.address =
"224.2.127.254";
7326 if(p.address.port <= 0)
7328 p.address.port = 9875;
7331 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7332 getOptional<Advertising>(
"advertising", p.advertising, j);
7336 JSON_SERIALIZED_CLASS(DiscoveryCistech)
7350 IMPLEMENT_JSON_SERIALIZATION()
7355 std::string interfaceName;
7367 interfaceName.clear();
7369 ageTimeoutMs = 30000;
7376 TOJSON_IMPL(enabled),
7377 TOJSON_IMPL(interfaceName),
7378 TOJSON_IMPL(address),
7379 TOJSON_IMPL(ageTimeoutMs)
7382 static void from_json(
const nlohmann::json& j, DiscoveryCistech& p)
7385 getOptional(
"enabled", p.enabled, j,
false);
7386 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7387 getOptional<NetworkAddress>(
"address", p.address, j);
7388 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7393 JSON_SERIALIZED_CLASS(DiscoveryTrellisware)
7405 IMPLEMENT_JSON_SERIALIZATION()
7428 static void to_json(nlohmann::json& j,
const DiscoveryTrellisware& p)
7431 TOJSON_IMPL(enabled),
7432 TOJSON_IMPL(security)
7435 static void from_json(
const nlohmann::json& j, DiscoveryTrellisware& p)
7438 getOptional(
"enabled", p.enabled, j,
false);
7439 getOptional<SecurityCertificate>(
"security", p.security, j);
7443 JSON_SERIALIZED_CLASS(DiscoveryConfiguration)
7455 IMPLEMENT_JSON_SERIALIZATION()
7488 static void to_json(nlohmann::json& j,
const DiscoveryConfiguration& p)
7491 TOJSON_IMPL(magellan),
7494 TOJSON_IMPL(cistech),
7495 TOJSON_IMPL(trellisware)
7498 static void from_json(
const nlohmann::json& j, DiscoveryConfiguration& p)
7501 getOptional<DiscoveryMagellan>(
"magellan", p.magellan, j);
7502 getOptional<DiscoverySsdp>(
"ssdp", p.ssdp, j);
7503 getOptional<DiscoverySap>(
"sap", p.sap, j);
7504 getOptional<DiscoveryCistech>(
"cistech", p.cistech, j);
7505 getOptional<DiscoveryTrellisware>(
"trellisware", p.trellisware, j);
7510 JSON_SERIALIZED_CLASS(ApiCallPacingLaneSettings)
7520 IMPLEMENT_JSON_SERIALIZATION()
7538 maxQueueDepth = 512;
7541 virtual void initForDocumenting()
7547 static void to_json(nlohmann::json& j,
const ApiCallPacingLaneSettings& p)
7550 TOJSON_IMPL(intervalMs),
7551 TOJSON_IMPL(maxQueueDepth)
7554 static void from_json(
const nlohmann::json& j, ApiCallPacingLaneSettings& p)
7557 getOptional<int>(
"intervalMs", p.intervalMs, j, 0);
7558 getOptional<uint32_t>(
"maxQueueDepth", p.maxQueueDepth, j, 512);
7562 JSON_SERIALIZED_CLASS(ApiCallPacingSettings)
7575 IMPLEMENT_JSON_SERIALIZATION()
7596 transmission.clear();
7597 configuration.clear();
7600 virtual void initForDocumenting()
7606 static void to_json(nlohmann::json& j,
const ApiCallPacingSettings& p)
7609 TOJSON_IMPL(topology),
7610 TOJSON_IMPL(transmission),
7611 TOJSON_IMPL(configuration)
7614 static void from_json(
const nlohmann::json& j, ApiCallPacingSettings& p)
7617 getOptional<ApiCallPacingLaneSettings>(
"topology", p.topology, j);
7618 getOptional<ApiCallPacingLaneSettings>(
"transmission", p.transmission, j);
7619 getOptional<ApiCallPacingLaneSettings>(
"configuration", p.configuration, j);
7623 JSON_SERIALIZED_CLASS(EnginePolicyInternals)
7637 IMPLEMENT_JSON_SERIALIZATION()
7652 int logTaskQueueStatsIntervalMs;
7654 bool enableLazySpeakerClosure;
7694 housekeeperIntervalMs = 1000;
7695 logTaskQueueStatsIntervalMs = 0;
7698 enableLazySpeakerClosure =
false;
7699 rpClusterStrategy = RallypointCluster::ConnectionStrategy_t::csRoundRobin;
7700 rpClusterRolloverSecs = 10;
7701 rtpExpirationCheckIntervalMs = 250;
7702 rpConnectionTimeoutSecs = 0;
7703 rpTransactionTimeoutMs = 0;
7704 stickyTidHangSecs = 10;
7705 uriStreamingIntervalMs = 60;
7706 delayedMicrophoneClosureSecs = 15;
7708 apiCallPacing.clear();
7712 static void to_json(nlohmann::json& j,
const EnginePolicyInternals& p)
7715 TOJSON_IMPL(watchdog),
7716 TOJSON_IMPL(housekeeperIntervalMs),
7717 TOJSON_IMPL(logTaskQueueStatsIntervalMs),
7718 TOJSON_IMPL(maxTxSecs),
7719 TOJSON_IMPL(maxRxSecs),
7720 TOJSON_IMPL(enableLazySpeakerClosure),
7721 TOJSON_IMPL(rpClusterStrategy),
7722 TOJSON_IMPL(rpClusterRolloverSecs),
7723 TOJSON_IMPL(rtpExpirationCheckIntervalMs),
7724 TOJSON_IMPL(rpConnectionTimeoutSecs),
7725 TOJSON_IMPL(rpTransactionTimeoutMs),
7726 TOJSON_IMPL(stickyTidHangSecs),
7727 TOJSON_IMPL(uriStreamingIntervalMs),
7728 TOJSON_IMPL(delayedMicrophoneClosureSecs),
7729 TOJSON_IMPL(tuning),
7730 TOJSON_IMPL(apiCallPacing)
7733 static void from_json(
const nlohmann::json& j, EnginePolicyInternals& p)
7736 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
7737 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
7738 getOptional<int>(
"logTaskQueueStatsIntervalMs", p.logTaskQueueStatsIntervalMs, j, 0);
7739 getOptional<int>(
"maxTxSecs", p.maxTxSecs, j, 30);
7740 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
7741 getOptional<bool>(
"enableLazySpeakerClosure", p.enableLazySpeakerClosure, j,
false);
7742 getOptional<RallypointCluster::ConnectionStrategy_t>(
"rpClusterStrategy", p.rpClusterStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
7743 getOptional<int>(
"rpClusterRolloverSecs", p.rpClusterRolloverSecs, j, 10);
7744 getOptional<int>(
"rtpExpirationCheckIntervalMs", p.rtpExpirationCheckIntervalMs, j, 250);
7745 getOptional<int>(
"rpConnectionTimeoutSecs", p.rpConnectionTimeoutSecs, j, 0);
7746 getOptional<int>(
"rpTransactionTimeoutMs", p.rpTransactionTimeoutMs, j, 0);
7747 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
7748 getOptional<int>(
"uriStreamingIntervalMs", p.uriStreamingIntervalMs, j, 60);
7749 getOptional<int>(
"delayedMicrophoneClosureSecs", p.delayedMicrophoneClosureSecs, j, 15);
7750 getOptional<TuningSettings>(
"tuning", p.tuning, j);
7751 getOptional<ApiCallPacingSettings>(
"apiCallPacing", p.apiCallPacing, j);
7755 JSON_SERIALIZED_CLASS(EnginePolicyTimelines)
7769 IMPLEMENT_JSON_SERIALIZATION()
7831 storageRoot.clear();
7832 maxStorageMb = 1024;
7833 maxMemMb = maxStorageMb;
7834 maxAudioEventMemMb = maxMemMb;
7835 maxDiskMb = maxStorageMb;
7836 maxEventAgeSecs = (86400 * 30);
7837 groomingIntervalSecs = (60 * 30);
7839 autosaveIntervalSecs = 5;
7841 disableSigningAndVerification =
false;
7846 static void to_json(nlohmann::json& j,
const EnginePolicyTimelines& p)
7849 TOJSON_IMPL(enabled),
7850 TOJSON_IMPL(storageRoot),
7851 TOJSON_IMPL(maxMemMb),
7852 TOJSON_IMPL(maxAudioEventMemMb),
7853 TOJSON_IMPL(maxDiskMb),
7854 TOJSON_IMPL(maxEventAgeSecs),
7855 TOJSON_IMPL(maxEvents),
7856 TOJSON_IMPL(groomingIntervalSecs),
7857 TOJSON_IMPL(autosaveIntervalSecs),
7858 TOJSON_IMPL(security),
7859 TOJSON_IMPL(disableSigningAndVerification),
7860 TOJSON_IMPL(ephemeral)
7863 static void from_json(
const nlohmann::json& j, EnginePolicyTimelines& p)
7866 getOptional<bool>(
"enabled", p.enabled, j,
true);
7867 getOptional<std::string>(
"storageRoot", p.storageRoot, j, EMPTY_STRING);
7869 getOptional<int>(
"maxStorageMb", p.maxStorageMb, j, 1024);
7870 getOptional<int>(
"maxMemMb", p.maxMemMb, j, p.maxStorageMb);
7871 getOptional<int>(
"maxAudioEventMemMb", p.maxAudioEventMemMb, j, p.maxMemMb);
7872 getOptional<int>(
"maxDiskMb", p.maxDiskMb, j, p.maxStorageMb);
7873 getOptional<long>(
"maxEventAgeSecs", p.maxEventAgeSecs, j, (86400 * 30));
7874 getOptional<long>(
"groomingIntervalSecs", p.groomingIntervalSecs, j, (60 * 30));
7875 getOptional<long>(
"autosaveIntervalSecs", p.autosaveIntervalSecs, j, 5);
7876 getOptional<int>(
"maxEvents", p.maxEvents, j, 1000);
7877 getOptional<SecurityCertificate>(
"security", p.security, j);
7878 getOptional<bool>(
"disableSigningAndVerification", p.disableSigningAndVerification, j,
false);
7879 getOptional<bool>(
"ephemeral", p.ephemeral, j,
false);
7884 JSON_SERIALIZED_CLASS(RtpMapEntry)
7896 IMPLEMENT_JSON_SERIALIZATION()
7918 rtpPayloadType = -1;
7922 static void to_json(nlohmann::json& j,
const RtpMapEntry& p)
7926 TOJSON_IMPL(engageType),
7927 TOJSON_IMPL(rtpPayloadType)
7930 static void from_json(
const nlohmann::json& j, RtpMapEntry& p)
7933 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7934 getOptional<int>(
"engageType", p.engageType, j, -1);
7935 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7939 JSON_SERIALIZED_CLASS(ExternalModule)
7951 IMPLEMENT_JSON_SERIALIZATION()
7973 configuration.clear();
7977 static void to_json(nlohmann::json& j,
const ExternalModule& p)
7984 if(!p.configuration.empty())
7986 j[
"configuration"] = p.configuration;
7989 static void from_json(
const nlohmann::json& j, ExternalModule& p)
7992 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7993 getOptional<std::string>(
"file", p.file, j, EMPTY_STRING);
7997 p.configuration = j.at(
"configuration");
8001 p.configuration.clear();
8007 JSON_SERIALIZED_CLASS(ExternalCodecDescriptor)
8019 IMPLEMENT_JSON_SERIALIZATION()
8042 rtpPayloadType = -1;
8045 rtpTsMultiplier = 0;
8049 static void to_json(nlohmann::json& j,
const ExternalCodecDescriptor& p)
8052 TOJSON_IMPL(rtpPayloadType),
8053 TOJSON_IMPL(samplingRate),
8054 TOJSON_IMPL(channels),
8055 TOJSON_IMPL(rtpTsMultiplier)
8058 static void from_json(
const nlohmann::json& j, ExternalCodecDescriptor& p)
8062 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
8063 getOptional<int>(
"samplingRate", p.samplingRate, j, -1);
8064 getOptional<int>(
"channels", p.channels, j, -1);
8065 getOptional<int>(
"rtpTsMultiplier", p.rtpTsMultiplier, j, -1);
8069 JSON_SERIALIZED_CLASS(EngineStatusReportConfiguration)
8081 IMPLEMENT_JSON_SERIALIZATION()
8113 includeMemoryDetail =
false;
8114 includeTaskQueueDetail =
false;
8119 static void to_json(nlohmann::json& j,
const EngineStatusReportConfiguration& p)
8122 TOJSON_IMPL(fileName),
8123 TOJSON_IMPL(intervalSecs),
8124 TOJSON_IMPL(enabled),
8125 TOJSON_IMPL(includeMemoryDetail),
8126 TOJSON_IMPL(includeTaskQueueDetail),
8130 static void from_json(
const nlohmann::json& j, EngineStatusReportConfiguration& p)
8133 getOptional<std::string>(
"fileName", p.fileName, j);
8134 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8135 getOptional<bool>(
"enabled", p.enabled, j,
false);
8136 getOptional<std::string>(
"runCmd", p.runCmd, j);
8137 getOptional<bool>(
"includeMemoryDetail", p.includeMemoryDetail, j,
false);
8138 getOptional<bool>(
"includeTaskQueueDetail", p.includeTaskQueueDetail, j,
false);
8142 JSON_SERIALIZED_CLASS(EnginePolicy)
8156 IMPLEMENT_JSON_SERIALIZATION()
8213 dataDirectory.clear();
8224 namedAudioDevices.clear();
8225 externalCodecs.clear();
8227 statusReport.clear();
8231 static void to_json(nlohmann::json& j,
const EnginePolicy& p)
8234 TOJSON_IMPL(dataDirectory),
8235 TOJSON_IMPL(licensing),
8236 TOJSON_IMPL(security),
8237 TOJSON_IMPL(networking),
8239 TOJSON_IMPL(discovery),
8240 TOJSON_IMPL(logging),
8241 TOJSON_IMPL(internals),
8242 TOJSON_IMPL(timelines),
8243 TOJSON_IMPL(database),
8244 TOJSON_IMPL(featureset),
8245 TOJSON_IMPL(namedAudioDevices),
8246 TOJSON_IMPL(externalCodecs),
8247 TOJSON_IMPL(rtpMap),
8248 TOJSON_IMPL(statusReport)
8251 static void from_json(
const nlohmann::json& j, EnginePolicy& p)
8254 FROMJSON_IMPL_SIMPLE(dataDirectory);
8255 FROMJSON_IMPL_SIMPLE(licensing);
8256 FROMJSON_IMPL_SIMPLE(security);
8257 FROMJSON_IMPL_SIMPLE(networking);
8258 FROMJSON_IMPL_SIMPLE(audio);
8259 FROMJSON_IMPL_SIMPLE(discovery);
8260 FROMJSON_IMPL_SIMPLE(logging);
8261 FROMJSON_IMPL_SIMPLE(internals);
8262 FROMJSON_IMPL_SIMPLE(timelines);
8263 FROMJSON_IMPL_SIMPLE(database);
8264 FROMJSON_IMPL_SIMPLE(featureset);
8265 FROMJSON_IMPL_SIMPLE(namedAudioDevices);
8266 FROMJSON_IMPL_SIMPLE(externalCodecs);
8267 FROMJSON_IMPL_SIMPLE(rtpMap);
8268 FROMJSON_IMPL_SIMPLE(statusReport);
8273 JSON_SERIALIZED_CLASS(TalkgroupAsset)
8285 IMPLEMENT_JSON_SERIALIZATION()
8308 static void to_json(nlohmann::json& j,
const TalkgroupAsset& p)
8311 TOJSON_IMPL(nodeId),
8315 static void from_json(
const nlohmann::json& j, TalkgroupAsset& p)
8318 getOptional<std::string>(
"nodeId", p.nodeId, j);
8319 getOptional<Group>(
"group", p.group, j);
8323 JSON_SERIALIZED_CLASS(EngageDiscoveredGroup)
8333 IMPLEMENT_JSON_SERIALIZATION()
8363 static void to_json(nlohmann::json& j,
const EngageDiscoveredGroup& p)
8372 static void from_json(
const nlohmann::json& j, EngageDiscoveredGroup& p)
8375 getOptional<std::string>(
"id", p.id, j);
8376 getOptional<int>(
"type", p.type, j, 0);
8377 getOptional<NetworkAddress>(
"rx", p.rx, j);
8378 getOptional<NetworkAddress>(
"tx", p.tx, j);
8382 JSON_SERIALIZED_CLASS(RallypointPeer)
8394 IMPLEMENT_JSON_SERIALIZATION()
8401 olpUseRpConfiguration = 0,
8408 } OutboundLeafPolicy_t;
8413 olpUseRpWebSocketTlsConfiguration = 0,
8416 olpUseTlsForWebSocket = 1,
8419 olpDoNotUseTlsForWebSocket = 2
8420 } OutboundWebSocketTlsPolicy_t;
8472 certificate.clear();
8473 connectionTimeoutSecs = 0;
8474 forceIsMeshLeaf =
false;
8475 outboundLeafPolicy = OutboundLeafPolicy_t::olpUseRpConfiguration;
8476 protocol = Rallypoint::RpProtocol_t::rppTlsTcp;
8478 additionalProtocols.clear();
8480 outboundWebSocketTlsPolicy = OutboundWebSocketTlsPolicy_t::olpUseRpWebSocketTlsConfiguration;
8484 static void to_json(nlohmann::json& j,
const RallypointPeer& p)
8488 TOJSON_IMPL(enabled),
8490 TOJSON_IMPL(certificate),
8491 TOJSON_IMPL(connectionTimeoutSecs),
8492 TOJSON_IMPL(forceIsMeshLeaf),
8493 TOJSON_IMPL(outboundLeafPolicy),
8494 TOJSON_IMPL(protocol),
8496 TOJSON_IMPL(additionalProtocols),
8498 TOJSON_IMPL(outboundWebSocketTlsPolicy)
8501 static void from_json(
const nlohmann::json& j, RallypointPeer& p)
8504 j.at(
"id").get_to(p.id);
8505 getOptional<bool>(
"enabled", p.enabled, j,
true);
8506 getOptional<NetworkAddress>(
"host", p.host, j);
8507 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8508 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
8509 getOptional<bool>(
"forceIsMeshLeaf", p.forceIsMeshLeaf, j,
false);
8510 getOptional<RallypointPeer::OutboundLeafPolicy_t>(
"outboundLeafPolicy", p.outboundLeafPolicy, j, RallypointPeer::OutboundLeafPolicy_t::olpUseRpConfiguration);
8511 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
8512 getOptional<std::string>(
"path", p.path, j);
8513 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
8514 getOptional<std::string>(
"sni", p.sni, j);
8515 getOptional<RallypointPeer::OutboundWebSocketTlsPolicy_t>(
"outboundWebSocketTlsPolicy", p.outboundWebSocketTlsPolicy, j, RallypointPeer::OutboundWebSocketTlsPolicy_t::olpUseRpWebSocketTlsConfiguration);
8519 JSON_SERIALIZED_CLASS(RallypointServerLimits)
8531 IMPLEMENT_JSON_SERIALIZATION()
8589 maxMulticastReflectors = 0;
8590 maxRegisteredStreams = 0;
8592 maxRxPacketsPerSec = 0;
8593 maxTxPacketsPerSec = 0;
8594 maxRxBytesPerSec = 0;
8595 maxTxBytesPerSec = 0;
8597 maxInboundBacklog = 64;
8598 lowPriorityQueueThreshold = 64;
8599 normalPriorityQueueThreshold = 256;
8600 denyNewConnectionCpuThreshold = 75;
8601 warnAtCpuThreshold = 65;
8605 static void to_json(nlohmann::json& j,
const RallypointServerLimits& p)
8608 TOJSON_IMPL(maxClients),
8609 TOJSON_IMPL(maxPeers),
8610 TOJSON_IMPL(maxMulticastReflectors),
8611 TOJSON_IMPL(maxRegisteredStreams),
8612 TOJSON_IMPL(maxStreamPaths),
8613 TOJSON_IMPL(maxRxPacketsPerSec),
8614 TOJSON_IMPL(maxTxPacketsPerSec),
8615 TOJSON_IMPL(maxRxBytesPerSec),
8616 TOJSON_IMPL(maxTxBytesPerSec),
8617 TOJSON_IMPL(maxQOpsPerSec),
8618 TOJSON_IMPL(maxInboundBacklog),
8619 TOJSON_IMPL(lowPriorityQueueThreshold),
8620 TOJSON_IMPL(normalPriorityQueueThreshold),
8621 TOJSON_IMPL(denyNewConnectionCpuThreshold),
8622 TOJSON_IMPL(warnAtCpuThreshold)
8625 static void from_json(
const nlohmann::json& j, RallypointServerLimits& p)
8628 getOptional<uint32_t>(
"maxClients", p.maxClients, j, 0);
8629 getOptional<uint32_t>(
"maxPeers", p.maxPeers, j, 0);
8630 getOptional<uint32_t>(
"maxMulticastReflectors", p.maxMulticastReflectors, j, 0);
8631 getOptional<uint32_t>(
"maxRegisteredStreams", p.maxRegisteredStreams, j, 0);
8632 getOptional<uint32_t>(
"maxStreamPaths", p.maxStreamPaths, j, 0);
8633 getOptional<uint32_t>(
"maxRxPacketsPerSec", p.maxRxPacketsPerSec, j, 0);
8634 getOptional<uint32_t>(
"maxTxPacketsPerSec", p.maxTxPacketsPerSec, j, 0);
8635 getOptional<uint32_t>(
"maxRxBytesPerSec", p.maxRxBytesPerSec, j, 0);
8636 getOptional<uint32_t>(
"maxTxBytesPerSec", p.maxTxBytesPerSec, j, 0);
8637 getOptional<uint32_t>(
"maxQOpsPerSec", p.maxQOpsPerSec, j, 0);
8638 getOptional<uint32_t>(
"maxInboundBacklog", p.maxInboundBacklog, j, 64);
8639 getOptional<uint32_t>(
"lowPriorityQueueThreshold", p.lowPriorityQueueThreshold, j, 64);
8640 getOptional<uint32_t>(
"normalPriorityQueueThreshold", p.normalPriorityQueueThreshold, j, 256);
8641 getOptional<uint32_t>(
"denyNewConnectionCpuThreshold", p.denyNewConnectionCpuThreshold, j, 75);
8642 getOptional<uint32_t>(
"warnAtCpuThreshold", p.warnAtCpuThreshold, j, 65);
8646 JSON_SERIALIZED_CLASS(RallypointServerStatusReportConfiguration)
8658 IMPLEMENT_JSON_SERIALIZATION()
8693 includeLinks =
false;
8694 includePeerLinkDetails =
false;
8695 includeClientLinkDetails =
false;
8700 static void to_json(nlohmann::json& j,
const RallypointServerStatusReportConfiguration& p)
8703 TOJSON_IMPL(fileName),
8704 TOJSON_IMPL(intervalSecs),
8705 TOJSON_IMPL(enabled),
8706 TOJSON_IMPL(includeLinks),
8707 TOJSON_IMPL(includePeerLinkDetails),
8708 TOJSON_IMPL(includeClientLinkDetails),
8712 static void from_json(
const nlohmann::json& j, RallypointServerStatusReportConfiguration& p)
8715 getOptional<std::string>(
"fileName", p.fileName, j);
8716 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8717 getOptional<bool>(
"enabled", p.enabled, j,
false);
8718 getOptional<bool>(
"includeLinks", p.includeLinks, j,
false);
8719 getOptional<bool>(
"includePeerLinkDetails", p.includePeerLinkDetails, j,
false);
8720 getOptional<bool>(
"includeClientLinkDetails", p.includeClientLinkDetails, j,
false);
8721 getOptional<std::string>(
"runCmd", p.runCmd, j);
8725 JSON_SERIALIZED_CLASS(RallypointServerLinkGraph)
8728 IMPLEMENT_JSON_SERIALIZATION()
8771 includeDigraphEnclosure =
true;
8772 includeClients =
false;
8773 coreRpStyling =
"[shape=hexagon color=firebrick style=filled]";
8774 leafRpStyling =
"[shape=box color=gray style=filled]";
8775 clientStyling.clear();
8780 static void to_json(nlohmann::json& j,
const RallypointServerLinkGraph& p)
8783 TOJSON_IMPL(fileName),
8784 TOJSON_IMPL(minRefreshSecs),
8785 TOJSON_IMPL(enabled),
8786 TOJSON_IMPL(includeDigraphEnclosure),
8787 TOJSON_IMPL(includeClients),
8788 TOJSON_IMPL(coreRpStyling),
8789 TOJSON_IMPL(leafRpStyling),
8790 TOJSON_IMPL(clientStyling),
8794 static void from_json(
const nlohmann::json& j, RallypointServerLinkGraph& p)
8797 getOptional<std::string>(
"fileName", p.fileName, j);
8798 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8799 getOptional<bool>(
"enabled", p.enabled, j,
false);
8800 getOptional<bool>(
"includeDigraphEnclosure", p.includeDigraphEnclosure, j,
true);
8801 getOptional<bool>(
"includeClients", p.includeClients, j,
false);
8802 getOptional<std::string>(
"coreRpStyling", p.coreRpStyling, j,
"[shape=hexagon color=firebrick style=filled]");
8803 getOptional<std::string>(
"leafRpStyling", p.leafRpStyling, j,
"[shape=box color=gray style=filled]");
8804 getOptional<std::string>(
"clientStyling", p.clientStyling, j);
8805 getOptional<std::string>(
"runCmd", p.runCmd, j);
8810 JSON_SERIALIZED_CLASS(RallypointServerStreamStatsExport)
8820 IMPLEMENT_JSON_SERIALIZATION()
8863 resetCountersAfterExport =
false;
8869 static void to_json(nlohmann::json& j,
const RallypointServerStreamStatsExport& p)
8872 TOJSON_IMPL(fileName),
8873 TOJSON_IMPL(intervalSecs),
8874 TOJSON_IMPL(enabled),
8875 TOJSON_IMPL(resetCountersAfterExport),
8876 TOJSON_IMPL(runCmd),
8880 static void from_json(
const nlohmann::json& j, RallypointServerStreamStatsExport& p)
8883 getOptional<std::string>(
"fileName", p.fileName, j);
8884 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8885 getOptional<bool>(
"enabled", p.enabled, j,
false);
8886 getOptional<bool>(
"resetCountersAfterExport", p.resetCountersAfterExport, j,
false);
8887 getOptional<std::string>(
"runCmd", p.runCmd, j);
8888 getOptional<RallypointServerStreamStatsExport::ExportFormat_t>(
"format", p.format, j, RallypointServerStreamStatsExport::ExportFormat_t::fmtCsv);
8892 JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
8895 IMPLEMENT_JSON_SERIALIZATION()
8924 static void to_json(nlohmann::json& j,
const RallypointServerRouteMap& p)
8927 TOJSON_IMPL(fileName),
8928 TOJSON_IMPL(minRefreshSecs),
8929 TOJSON_IMPL(enabled),
8933 static void from_json(
const nlohmann::json& j, RallypointServerRouteMap& p)
8936 getOptional<std::string>(
"fileName", p.fileName, j);
8937 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8938 getOptional<bool>(
"enabled", p.enabled, j,
false);
8939 getOptional<std::string>(
"runCmd", p.runCmd, j);
8944 JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
8956 IMPLEMENT_JSON_SERIALIZATION()
8975 immediateClose =
true;
8979 static void to_json(nlohmann::json& j,
const ExternalHealthCheckResponder& p)
8982 TOJSON_IMPL(listenPort),
8983 TOJSON_IMPL(immediateClose)
8986 static void from_json(
const nlohmann::json& j, ExternalHealthCheckResponder& p)
8989 getOptional<int>(
"listenPort", p.listenPort, j, 0);
8990 getOptional<bool>(
"immediateClose", p.immediateClose, j,
true);
8995 JSON_SERIALIZED_CLASS(PeeringConfiguration)
9005 IMPLEMENT_JSON_SERIALIZATION()
9035 static void to_json(nlohmann::json& j,
const PeeringConfiguration& p)
9039 TOJSON_IMPL(version),
9040 TOJSON_IMPL(comments),
9044 static void from_json(
const nlohmann::json& j, PeeringConfiguration& p)
9047 getOptional<std::string>(
"id", p.id, j);
9048 getOptional<int>(
"version", p.version, j, 0);
9049 getOptional<std::string>(
"comments", p.comments, j);
9050 getOptional<std::vector<RallypointPeer>>(
"peers", p.peers, j);
9054 JSON_SERIALIZED_CLASS(IgmpSnooping)
9064 IMPLEMENT_JSON_SERIALIZATION()
9087 queryIntervalMs = 125000;
9088 subscriptionTimeoutMs = 0;
9092 static void to_json(nlohmann::json& j,
const IgmpSnooping& p)
9095 TOJSON_IMPL(enabled),
9096 TOJSON_IMPL(queryIntervalMs),
9097 TOJSON_IMPL(subscriptionTimeoutMs)
9100 static void from_json(
const nlohmann::json& j, IgmpSnooping& p)
9103 getOptional<bool>(
"enabled", p.enabled, j);
9104 getOptional<int>(
"queryIntervalMs", p.queryIntervalMs, j, 125000);
9105 getOptional<int>(
"subscriptionTimeoutMs", p.subscriptionTimeoutMs, j, 0);
9110 JSON_SERIALIZED_CLASS(RallypointReflector)
9119 IMPLEMENT_JSON_SERIALIZATION()
9134 } DirectionRestriction_t;
9166 multicastInterfaceName.clear();
9167 additionalTx.clear();
9168 directionRestriction = drNone;
9172 static void to_json(nlohmann::json& j,
const RallypointReflector& p)
9178 TOJSON_IMPL(multicastInterfaceName),
9179 TOJSON_IMPL(additionalTx),
9180 TOJSON_IMPL(directionRestriction)
9183 static void from_json(
const nlohmann::json& j, RallypointReflector& p)
9186 j.at(
"id").get_to(p.id);
9187 j.at(
"rx").get_to(p.rx);
9188 j.at(
"tx").get_to(p.tx);
9189 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
9190 getOptional<std::vector<NetworkAddress>>(
"additionalTx", p.additionalTx, j);
9191 getOptional<RallypointReflector::DirectionRestriction_t>(
"directionRestriction", p.directionRestriction, j, RallypointReflector::DirectionRestriction_t::drNone);
9196 JSON_SERIALIZED_CLASS(RallypointUdpStreamingIpvX)
9205 IMPLEMENT_JSON_SERIALIZATION()
9227 static void to_json(nlohmann::json& j,
const RallypointUdpStreamingIpvX& p)
9230 TOJSON_IMPL(enabled),
9231 TOJSON_IMPL(external)
9234 static void from_json(
const nlohmann::json& j, RallypointUdpStreamingIpvX& p)
9237 getOptional<bool>(
"enabled", p.enabled, j,
true);
9238 getOptional<NetworkAddress>(
"external", p.external, j);
9242 JSON_SERIALIZED_CLASS(RallypointUdpStreaming)
9251 IMPLEMENT_JSON_SERIALIZATION()
9262 ctSharedKeyAes256FullIv = 1,
9265 ctSharedKeyAes256IdxIv = 2,
9268 ctSharedKeyChaCha20FullIv = 3,
9271 ctSharedKeyChaCha20IdxIv = 4
9307 cryptoType = CryptoType_t::ctSharedKeyAes256FullIv;
9311 keepaliveIntervalSecs = 15;
9312 priority = TxPriority_t::priVoice;
9317 static void to_json(nlohmann::json& j,
const RallypointUdpStreaming& p)
9320 TOJSON_IMPL(enabled),
9321 TOJSON_IMPL(cryptoType),
9322 TOJSON_IMPL(listenPort),
9323 TOJSON_IMPL(keepaliveIntervalSecs),
9326 TOJSON_IMPL(priority),
9330 static void from_json(
const nlohmann::json& j, RallypointUdpStreaming& p)
9333 getOptional<bool>(
"enabled", p.enabled, j,
true);
9334 getOptional<RallypointUdpStreaming::CryptoType_t>(
"cryptoType", p.cryptoType, j, RallypointUdpStreaming::CryptoType_t::ctSharedKeyAes256FullIv);
9335 getOptional<int>(
"listenPort", p.listenPort, j, 7444);
9336 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
9337 getOptional<RallypointUdpStreamingIpvX>(
"ipv4", p.ipv4, j);
9338 getOptional<RallypointUdpStreamingIpvX>(
"ipv6", p.ipv6, j);
9339 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
9340 getOptional<int>(
"ttl", p.ttl, j, 64);
9344 JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
9353 IMPLEMENT_JSON_SERIALIZATION()
9398 static void to_json(nlohmann::json& j,
const RallypointRpRtTimingBehavior& p)
9401 TOJSON_IMPL(behavior),
9402 TOJSON_IMPL(atOrAboveMs),
9406 static void from_json(
const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
9409 getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>(
"behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
9410 getOptional<uint32_t>(
"atOrAboveMs", p.atOrAboveMs, j, 0);
9411 getOptional<std::string>(
"runCmd", p.runCmd, j);
9416 JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
9425 IMPLEMENT_JSON_SERIALIZATION()
9453 certificate.clear();
9454 requireClientCertificate =
false;
9459 static void to_json(nlohmann::json& j,
const RallypointWebsocketSettings& p)
9462 TOJSON_IMPL(enabled),
9463 TOJSON_IMPL(listenPort),
9464 TOJSON_IMPL(certificate),
9465 TOJSON_IMPL(requireClientCertificate),
9466 TOJSON_IMPL(requireTls)
9469 static void from_json(
const nlohmann::json& j, RallypointWebsocketSettings& p)
9472 getOptional<bool>(
"enabled", p.enabled, j,
false);
9473 getOptional<int>(
"listenPort", p.listenPort, j, 8443);
9474 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9475 getOptional<bool>(
"requireClientCertificate", p.requireClientCertificate, j,
false);
9476 getOptional<bool>(
"requireTls", p.requireTls, j,
true);
9482 JSON_SERIALIZED_CLASS(RallypointAdvertisingSettings)
9491 IMPLEMENT_JSON_SERIALIZATION()
9522 serviceName =
"_rallypoint._tcp.local.";
9523 interfaceName.clear();
9529 static void to_json(nlohmann::json& j,
const RallypointAdvertisingSettings& p)
9532 TOJSON_IMPL(enabled),
9533 TOJSON_IMPL(hostName),
9534 TOJSON_IMPL(serviceName),
9535 TOJSON_IMPL(interfaceName),
9540 static void from_json(
const nlohmann::json& j, RallypointAdvertisingSettings& p)
9543 getOptional<bool>(
"enabled", p.enabled, j,
false);
9544 getOptional<std::string>(
"hostName", p.hostName, j);
9545 getOptional<std::string>(
"serviceName", p.serviceName, j,
"_rallypoint._tcp.local.");
9546 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
9548 getOptional<int>(
"port", p.port, j, 0);
9549 getOptional<int>(
"ttl", p.ttl, j, 60);
9556 JSON_SERIALIZED_CLASS(NamedIdentity)
9565 IMPLEMENT_JSON_SERIALIZATION()
9583 certificate.clear();
9587 static void to_json(nlohmann::json& j,
const NamedIdentity& p)
9591 TOJSON_IMPL(certificate)
9594 static void from_json(
const nlohmann::json& j, NamedIdentity& p)
9597 getOptional<std::string>(
"name", p.name, j);
9598 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9602 JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
9611 IMPLEMENT_JSON_SERIALIZATION()
9629 restrictions.clear();
9633 static void to_json(nlohmann::json& j,
const RallypointExtendedGroupRestriction& p)
9637 TOJSON_IMPL(restrictions)
9640 static void from_json(
const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
9643 getOptional<std::string>(
"id", p.id, j);
9644 getOptional<std::vector<StringRestrictionList>>(
"restrictions", p.restrictions, j);
9648 JSON_SERIALIZED_CLASS(RtiCloudSettings)
9656 IMPLEMENT_JSON_SERIALIZATION()
9677 enrollmentCode.clear();
9678 serviceBaseUrlPrefix =
"prod.com";
9682 static void to_json(nlohmann::json& j,
const RtiCloudSettings& p)
9685 TOJSON_IMPL(enabled),
9686 TOJSON_IMPL(enrollmentCode),
9687 TOJSON_IMPL(serviceBaseUrlPrefix)
9690 static void from_json(
const nlohmann::json& j, RtiCloudSettings& p)
9693 getOptional<bool>(
"enabled", p.enabled, j,
false);
9694 getOptional<std::string>(
"enrollmentCode", p.enrollmentCode, j);
9695 getOptional<std::string>(
"serviceBaseUrlPrefix", p.serviceBaseUrlPrefix, j,
"prod.com");
9699 JSON_SERIALIZED_CLASS(NsmNodeScripts)
9707 IMPLEMENT_JSON_SERIALIZATION()
9712 std::string beforeGoingActive;
9713 std::string onGoingActive;
9714 std::string beforeActive;
9715 std::string onActive;
9716 std::string inDashboard;
9717 std::string onStatusReport;
9727 beforeGoingActive.clear();
9728 onGoingActive.clear();
9729 beforeActive.clear();
9731 inDashboard.clear();
9732 onStatusReport.clear();
9739 TOJSON_IMPL(onIdle),
9740 TOJSON_IMPL(beforeGoingActive),
9741 TOJSON_IMPL(onGoingActive),
9742 TOJSON_IMPL(beforeActive),
9743 TOJSON_IMPL(onActive),
9744 TOJSON_IMPL(inDashboard),
9745 TOJSON_IMPL(onStatusReport)
9748 static void from_json(
const nlohmann::json& j, NsmNodeScripts& p)
9751 getOptional<std::string>(
"onIdle", p.onIdle, j);
9752 getOptional<std::string>(
"beforeGoingActive", p.beforeGoingActive, j);
9753 getOptional<std::string>(
"onGoingActive", p.onGoingActive, j);
9754 getOptional<std::string>(
"beforeActive", p.beforeActive, j);
9755 getOptional<std::string>(
"onActive", p.onActive, j);
9756 getOptional<std::string>(
"inDashboard", p.inDashboard, j);
9757 getOptional<std::string>(
"onStatusReport", p.onStatusReport, j);
9761 JSON_SERIALIZED_CLASS(NsmNodeLogging)
9769 IMPLEMENT_JSON_SERIALIZATION()
9777 bool logCommandOutput;
9778 bool logResourceStates;
9789 logCommandOutput =
false;
9790 logResourceStates =
false;
9794 static void to_json(nlohmann::json& j,
const NsmNodeLogging& p)
9798 TOJSON_IMPL(dashboard),
9799 TOJSON_IMPL(logCommandOutput),
9800 TOJSON_IMPL(logResourceStates)
9803 static void from_json(
const nlohmann::json& j, NsmNodeLogging& p)
9806 getOptional<int>(
"level", p.level, j, 3);
9807 getOptional<bool>(
"dashboard", p.dashboard, j,
false);
9808 getOptional<bool>(
"logCommandOutput", p.logCommandOutput, j,
false);
9809 getOptional<bool>(
"logResourceStates", p.logResourceStates, j,
false);
9813 JSON_SERIALIZED_CLASS(NsmNodePeriodic)
9821 IMPLEMENT_JSON_SERIALIZATION()
9827 std::string command;
9846 TOJSON_IMPL(intervalSecs),
9847 TOJSON_IMPL(command)
9850 static void from_json(
const nlohmann::json& j, NsmNodePeriodic& p)
9853 getOptional<std::string>(
"id", p.id, j);
9854 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
9855 getOptional<std::string>(
"command", p.command, j);
9859 JSON_SERIALIZED_CLASS(NsmNodeCotLocationPollSettings)
9870 IMPLEMENT_JSON_SERIALIZATION()
9897 static void to_json(nlohmann::json& j,
const NsmNodeCotLocationPollSettings& p)
9900 TOJSON_IMPL(enabled),
9901 TOJSON_IMPL(runCmd),
9902 TOJSON_IMPL(intervalSecs),
9903 TOJSON_IMPL(failClosed)
9906 static void from_json(
const nlohmann::json& j, NsmNodeCotLocationPollSettings& p)
9909 getOptional<bool>(
"enabled", p.enabled, j,
false);
9910 getOptional<std::string>(
"runCmd", p.runCmd, j);
9911 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 10);
9912 getOptional<bool>(
"failClosed", p.failClosed, j,
true);
9916 JSON_SERIALIZED_CLASS(NsmNodeCotSettings)
9924 IMPLEMENT_JSON_SERIALIZATION()
9966 announceWhenIdle =
false;
9967 idleIntervalSecs = 30;
9968 locationPoll.clear();
9972 static void to_json(nlohmann::json& j,
const NsmNodeCotSettings& p)
9975 TOJSON_IMPL(useCot),
9984 TOJSON_IMPL(callsign),
9985 TOJSON_IMPL(detailJson),
9986 TOJSON_IMPL(announceWhenIdle),
9987 TOJSON_IMPL(idleIntervalSecs),
9988 TOJSON_IMPL(locationPoll)
9991 static void from_json(
const nlohmann::json& j, NsmNodeCotSettings& p)
9994 getOptional<bool>(
"useCot", p.useCot, j,
false);
9995 getOptional<std::string>(
"uid", p.uid, j);
9996 getOptional<std::string>(
"type", p.type, j);
9997 getOptional<std::string>(
"how", p.how, j);
9998 getOptional<std::string>(
"lat", p.lat, j);
9999 getOptional<std::string>(
"lon", p.lon, j);
10000 getOptional<std::string>(
"ce", p.ce, j);
10001 getOptional<std::string>(
"hae", p.hae, j);
10002 getOptional<std::string>(
"le", p.le, j);
10003 getOptional<std::string>(
"callsign", p.callsign, j);
10004 getOptional<std::string>(
"detailJson", p.detailJson, j);
10005 getOptional<bool>(
"announceWhenIdle", p.announceWhenIdle, j,
false);
10006 getOptional<int>(
"idleIntervalSecs", p.idleIntervalSecs, j, 30);
10007 getOptional<NsmNodeCotLocationPollSettings>(
"locationPoll", p.locationPoll, j);
10011 JSON_SERIALIZED_CLASS(StatusUploadConfiguration)
10025 IMPLEMENT_JSON_SERIALIZATION()
10062 static void to_json(nlohmann::json& j,
const StatusUploadConfiguration& p)
10064 j = nlohmann::json{
10065 TOJSON_IMPL(baseUrl),
10066 TOJSON_IMPL(timeoutSecs),
10067 TOJSON_IMPL(apiKey),
10071 static void from_json(
const nlohmann::json& j, StatusUploadConfiguration& p)
10074 getOptional<std::string>(
"baseUrl", p.baseUrl, j);
10075 getOptional<int>(
"timeoutSecs", p.timeoutSecs, j, 3);
10076 getOptional<std::string>(
"apiKey", p.apiKey, j);
10077 getOptional<Tls>(
"tls", p.tls, j);
10081 JSON_SERIALIZED_CLASS(NsmNodeStatusReportImmediateConfiguration)
10094 IMPLEMENT_JSON_SERIALIZATION()
10115 minIntervalSecs = 3;
10116 onStateChange =
true;
10117 onOwnerChange =
true;
10121 static void to_json(nlohmann::json& j,
const NsmNodeStatusReportImmediateConfiguration& p)
10123 j = nlohmann::json{
10124 TOJSON_IMPL(enabled),
10125 TOJSON_IMPL(minIntervalSecs),
10126 TOJSON_IMPL(onStateChange),
10127 TOJSON_IMPL(onOwnerChange)
10130 static void from_json(
const nlohmann::json& j, NsmNodeStatusReportImmediateConfiguration& p)
10133 getOptional<bool>(
"enabled", p.enabled, j,
false);
10134 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 3);
10135 getOptional<bool>(
"onStateChange", p.onStateChange, j,
true);
10136 getOptional<bool>(
"onOwnerChange", p.onOwnerChange, j,
true);
10140 JSON_SERIALIZED_CLASS(NsmNodeStatusReportConfiguration)
10152 IMPLEMENT_JSON_SERIALIZATION()
10184 includeResourceDetail =
false;
10190 static void to_json(nlohmann::json& j,
const NsmNodeStatusReportConfiguration& p)
10192 j = nlohmann::json{
10193 TOJSON_IMPL(fileName),
10194 TOJSON_IMPL(intervalSecs),
10195 TOJSON_IMPL(enabled),
10196 TOJSON_IMPL(includeResourceDetail),
10197 TOJSON_IMPL(runCmd),
10198 TOJSON_IMPL(immediate)
10201 static void from_json(
const nlohmann::json& j, NsmNodeStatusReportConfiguration& p)
10204 getOptional<std::string>(
"fileName", p.fileName, j);
10205 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
10206 getOptional<bool>(
"enabled", p.enabled, j,
false);
10207 getOptional<std::string>(
"runCmd", p.runCmd, j);
10208 getOptional<bool>(
"includeResourceDetail", p.includeResourceDetail, j,
false);
10209 getOptional<NsmNodeStatusReportImmediateConfiguration>(
"immediate", p.immediate, j);
10213 JSON_SERIALIZED_CLASS(NsmNodeElectionGateSettings)
10225 IMPLEMENT_JSON_SERIALIZATION()
10252 static void to_json(nlohmann::json& j,
const NsmNodeElectionGateSettings& p)
10254 j = nlohmann::json{
10255 TOJSON_IMPL(enabled),
10256 TOJSON_IMPL(runCmd),
10257 TOJSON_IMPL(intervalSecs),
10258 TOJSON_IMPL(failClosed)
10261 static void from_json(
const nlohmann::json& j, NsmNodeElectionGateSettings& p)
10264 getOptional<bool>(
"enabled", p.enabled, j,
false);
10265 getOptional<std::string>(
"runCmd", p.runCmd, j);
10266 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 2);
10267 getOptional<bool>(
"failClosed", p.failClosed, j,
true);
10271 JSON_SERIALIZED_CLASS(NsmNodeActiveHealthCheckSettings)
10285 IMPLEMENT_JSON_SERIALIZATION()
10312 unhealthyGraceMs = 5000;
10313 releaseCooldownSecs = 30;
10318 static void to_json(nlohmann::json& j,
const NsmNodeActiveHealthCheckSettings& p)
10320 j = nlohmann::json{
10321 TOJSON_IMPL(enabled),
10322 TOJSON_IMPL(runCmd),
10323 TOJSON_IMPL(intervalSecs),
10324 TOJSON_IMPL(unhealthyGraceMs),
10325 TOJSON_IMPL(releaseCooldownSecs),
10326 TOJSON_IMPL(failClosed)
10329 static void from_json(
const nlohmann::json& j, NsmNodeActiveHealthCheckSettings& p)
10332 getOptional<bool>(
"enabled", p.enabled, j,
false);
10333 getOptional<std::string>(
"runCmd", p.runCmd, j);
10334 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 5);
10335 getOptional<int>(
"unhealthyGraceMs", p.unhealthyGraceMs, j, 5000);
10336 getOptional<int>(
"releaseCooldownSecs", p.releaseCooldownSecs, j, 30);
10337 getOptional<bool>(
"failClosed", p.failClosed, j,
true);
10341 JSON_SERIALIZED_CLASS(NsmNode)
10352 IMPLEMENT_JSON_SERIALIZATION()
10353 IMPLEMENT_JSON_DOCUMENTATION(
NsmNode)
10439 fipsCrypto.clear();
10444 multicastInterfaceName.clear();
10445 stateMachine.clear();
10446 defaultPriority = 0;
10448 dashboardToken =
false;
10453 electionGate.clear();
10454 activeHealthCheck.clear();
10455 statusReport.clear();
10456 statusUpload.clear();
10457 configurationCheckSignalName =
"rts.7b392d1.${id}";
10459 featureset.clear();
10463 ipFamily = IpFamilyType_t::ifIp4;
10467 static void to_json(nlohmann::json& j,
const NsmNode& p)
10469 j = nlohmann::json{
10470 TOJSON_IMPL(fipsCrypto),
10471 TOJSON_IMPL(watchdog),
10474 TOJSON_IMPL(domainId),
10475 TOJSON_IMPL(multicastInterfaceName),
10476 TOJSON_IMPL(stateMachine),
10477 TOJSON_IMPL(defaultPriority),
10478 TOJSON_IMPL(fixedToken),
10479 TOJSON_IMPL(dashboardToken),
10480 TOJSON_IMPL(scripts),
10481 TOJSON_IMPL(logging),
10483 TOJSON_IMPL(periodics),
10484 TOJSON_IMPL(electionGate),
10485 TOJSON_IMPL(activeHealthCheck),
10486 TOJSON_IMPL(statusReport),
10487 TOJSON_IMPL(statusUpload),
10488 TOJSON_IMPL(configurationCheckSignalName),
10489 TOJSON_IMPL(featureset),
10490 TOJSON_IMPL(licensing),
10491 TOJSON_IMPL(ipFamily),
10492 TOJSON_IMPL(rxCapture),
10493 TOJSON_IMPL(txCapture),
10494 TOJSON_IMPL(tuning)
10497 static void from_json(
const nlohmann::json& j, NsmNode& p)
10500 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
10501 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
10502 getOptional<std::string>(
"id", p.id, j);
10503 getOptional<std::string>(
"name", p.name, j);
10504 getOptional<std::string>(
"domainId", p.domainId, j);
10506 if(p.domainId.empty())
10508 getOptional<std::string>(
"domainName", p.domainId, j);
10510 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
10511 getOptional<NsmConfiguration>(
"stateMachine", p.stateMachine, j);
10512 getOptional<int>(
"defaultPriority", p.defaultPriority, j, 0);
10513 getOptional<int>(
"fixedToken", p.fixedToken, j, -1);
10514 getOptional<bool>(
"dashboardToken", p.dashboardToken, j,
false);
10515 getOptional<NsmNodeScripts>(
"scripts", p.scripts, j);
10516 getOptional<NsmNodeLogging>(
"logging", p.logging, j);
10517 getOptional<NsmNodeCotSettings>(
"cot", p.cot, j);
10518 getOptional<std::vector<NsmNodePeriodic>>(
"periodics", p.periodics, j);
10519 getOptional<NsmNodeElectionGateSettings>(
"electionGate", p.electionGate, j);
10520 getOptional<NsmNodeActiveHealthCheckSettings>(
"activeHealthCheck", p.activeHealthCheck, j);
10521 getOptional<NsmNodeStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10522 getOptional<StatusUploadConfiguration>(
"statusUpload", p.statusUpload, j);
10523 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
10524 getOptional<Licensing>(
"licensing", p.licensing, j);
10525 getOptional<Featureset>(
"featureset", p.featureset, j);
10526 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
10527 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
10528 getOptional<TuningSettings>(
"tuning", p.tuning, j);
10529 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIp4);
10536 if (!j.contains(key))
10541 const nlohmann::json &nj = j.at(key);
10542 if (!nj.is_object())
10547 if (nj.contains(
"stateMachine") || nj.contains(
"cot") || nj.contains(
"scripts")
10548 || nj.contains(
"periodics") || nj.contains(
"electionGate") || nj.contains(
"activeHealthCheck")
10549 || nj.contains(
"statusReport") || nj.contains(
"multicastInterfaceName"))
10559 JSON_SERIALIZED_CLASS(NsmSettings)
10578 IMPLEMENT_JSON_SERIALIZATION()
10595 statusReport.clear();
10600 static void to_json(nlohmann::json& j,
const NsmSettings& p)
10602 j = nlohmann::json{
10603 TOJSON_IMPL(statusReport),
10607 static void from_json(
const nlohmann::json& j, NsmSettings& p)
10610 getOptional<NsmNodeStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10611 getOptional<std::vector<NsmNode>>(
"nodes", p.nodes, j);
10618 if(j.contains(
"nsm") && j.at(
"nsm").is_object())
10620 j.at(
"nsm").get_to(nsm);
10625 if(j.contains(
"nsmNodes") && j.at(
"nsmNodes").is_array())
10627 getOptional<std::vector<NsmNode>>(
"nsmNodes", nsm.
nodes, j);
10632 if(j.contains(
"nsmNode") && j.at(
"nsmNode").is_object())
10636 if(!node.
id.empty() || !node.
stateMachine.networking.address.empty())
10638 nsm.
nodes.push_back(node);
10643 JSON_SERIALIZED_CLASS(RallypointServer)
10654 IMPLEMENT_JSON_SERIALIZATION()
10661 sptCertificate = 1,
10662 sptCertPublicKey = 2,
10663 sptCertSubject = 3,
10665 sptCertFingerprint = 5,
10679 } StreamIdPrivacyType_t;
10880 fipsCrypto.clear();
10885 interfaceName.clear();
10886 certificate.clear();
10887 allowMulticastForwarding =
false;
10888 peeringConfiguration.clear();
10889 peeringConfigurationFileName.clear();
10890 peeringConfigurationFileCommand.clear();
10891 peeringConfigurationFileCheckSecs = 60;
10893 statusReport.clear();
10894 statusUpload.clear();
10897 externalHealthCheckResponder.clear();
10898 allowPeerForwarding =
false;
10899 multicastInterfaceName.clear();
10902 forwardDiscoveredGroups =
false;
10903 forwardMulticastAddressing =
false;
10904 isMeshLeaf =
false;
10905 disableMessageSigning =
false;
10906 multicastRestrictions.clear();
10907 igmpSnooping.clear();
10908 staticReflectors.clear();
10909 tcpTxOptions.clear();
10910 multicastTxOptions.clear();
10911 certStoreFileName.clear();
10912 certStorePasswordHex.clear();
10913 groupRestrictions.clear();
10914 configurationCheckSignalName =
"rts.7b392d1.${id}";
10916 featureset.clear();
10917 udpStreaming.clear();
10919 normalTaskQueueBias = 0;
10920 enableLeafReflectionReverseSubscription =
false;
10921 disableLoopDetection =
false;
10922 maxSecurityLevel = 0;
10924 streamStatsExport.clear();
10925 maxOutboundPeerConnectionIntervalDeltaSecs = 15;
10926 peerRtTestIntervalMs = 60000;
10927 peerRtBehaviors.clear();
10930 advertising.clear();
10932 extendedGroupRestrictions.clear();
10933 groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
10934 ipFamily = IpFamilyType_t::ifIp4;
10937 domainName.clear();
10938 allowedDomains.clear();
10939 blockedDomains.clear();
10940 extraDomains.clear();
10942 additionalIdentities.clear();
10943 streamIdPrivacyType = StreamIdPrivacyType_t::sptDefault;
10947 static void to_json(nlohmann::json& j,
const RallypointServer& p)
10949 j = nlohmann::json{
10950 TOJSON_IMPL(fipsCrypto),
10951 TOJSON_IMPL(watchdog),
10954 TOJSON_IMPL(listenPort),
10955 TOJSON_IMPL(interfaceName),
10956 TOJSON_IMPL(certificate),
10957 TOJSON_IMPL(allowMulticastForwarding),
10959 TOJSON_IMPL(peeringConfigurationFileName),
10960 TOJSON_IMPL(peeringConfigurationFileCommand),
10961 TOJSON_IMPL(peeringConfigurationFileCheckSecs),
10962 TOJSON_IMPL(ioPools),
10963 TOJSON_IMPL(statusReport),
10964 TOJSON_IMPL(statusUpload),
10965 TOJSON_IMPL(limits),
10966 TOJSON_IMPL(linkGraph),
10967 TOJSON_IMPL(externalHealthCheckResponder),
10968 TOJSON_IMPL(allowPeerForwarding),
10969 TOJSON_IMPL(multicastInterfaceName),
10971 TOJSON_IMPL(discovery),
10972 TOJSON_IMPL(forwardDiscoveredGroups),
10973 TOJSON_IMPL(forwardMulticastAddressing),
10974 TOJSON_IMPL(isMeshLeaf),
10975 TOJSON_IMPL(disableMessageSigning),
10976 TOJSON_IMPL(multicastRestrictions),
10977 TOJSON_IMPL(igmpSnooping),
10978 TOJSON_IMPL(staticReflectors),
10979 TOJSON_IMPL(tcpTxOptions),
10980 TOJSON_IMPL(multicastTxOptions),
10981 TOJSON_IMPL(certStoreFileName),
10982 TOJSON_IMPL(certStorePasswordHex),
10983 TOJSON_IMPL(groupRestrictions),
10984 TOJSON_IMPL(configurationCheckSignalName),
10985 TOJSON_IMPL(featureset),
10986 TOJSON_IMPL(licensing),
10987 TOJSON_IMPL(udpStreaming),
10988 TOJSON_IMPL(sysFlags),
10989 TOJSON_IMPL(normalTaskQueueBias),
10990 TOJSON_IMPL(enableLeafReflectionReverseSubscription),
10991 TOJSON_IMPL(disableLoopDetection),
10992 TOJSON_IMPL(maxSecurityLevel),
10993 TOJSON_IMPL(routeMap),
10994 TOJSON_IMPL(streamStatsExport),
10995 TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
10996 TOJSON_IMPL(peerRtTestIntervalMs),
10997 TOJSON_IMPL(peerRtBehaviors),
10998 TOJSON_IMPL(websocket),
11000 TOJSON_IMPL(advertising),
11001 TOJSON_IMPL(rtiCloud),
11002 TOJSON_IMPL(extendedGroupRestrictions),
11003 TOJSON_IMPL(groupRestrictionAccessPolicyType),
11004 TOJSON_IMPL(ipFamily),
11005 TOJSON_IMPL(rxCapture),
11006 TOJSON_IMPL(txCapture),
11007 TOJSON_IMPL(domainName),
11008 TOJSON_IMPL(allowedDomains),
11009 TOJSON_IMPL(blockedDomains),
11010 TOJSON_IMPL(extraDomains),
11011 TOJSON_IMPL(tuning),
11012 TOJSON_IMPL(additionalIdentities),
11013 TOJSON_IMPL(streamIdPrivacyType)
11016 static void from_json(
const nlohmann::json& j, RallypointServer& p)
11019 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11020 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11021 getOptional<std::string>(
"id", p.id, j);
11022 getOptional<std::string>(
"name", p.name, j);
11023 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
11024 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
11025 getOptional<int>(
"listenPort", p.listenPort, j, 7443);
11026 getOptional<bool>(
"allowMulticastForwarding", p.allowMulticastForwarding, j,
false);
11028 getOptional<std::string>(
"peeringConfigurationFileName", p.peeringConfigurationFileName, j);
11029 getOptional<std::string>(
"peeringConfigurationFileCommand", p.peeringConfigurationFileCommand, j);
11030 getOptional<int>(
"peeringConfigurationFileCheckSecs", p.peeringConfigurationFileCheckSecs, j, 60);
11031 getOptional<int>(
"ioPools", p.ioPools, j, -1);
11032 getOptional<RallypointServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11033 getOptional<StatusUploadConfiguration>(
"statusUpload", p.statusUpload, j);
11034 getOptional<RallypointServerLimits>(
"limits", p.limits, j);
11035 getOptional<RallypointServerLinkGraph>(
"linkGraph", p.linkGraph, j);
11036 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11037 getOptional<bool>(
"allowPeerForwarding", p.allowPeerForwarding, j,
false);
11038 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
11039 getOptional<Tls>(
"tls", p.tls, j);
11040 getOptional<DiscoveryConfiguration>(
"discovery", p.discovery, j);
11041 getOptional<bool>(
"forwardDiscoveredGroups", p.forwardDiscoveredGroups, j,
false);
11042 getOptional<bool>(
"forwardMulticastAddressing", p.forwardMulticastAddressing, j,
false);
11043 getOptional<bool>(
"isMeshLeaf", p.isMeshLeaf, j,
false);
11044 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
11045 getOptional<NetworkAddressRestrictionList>(
"multicastRestrictions", p.multicastRestrictions, j);
11046 getOptional<IgmpSnooping>(
"igmpSnooping", p.igmpSnooping, j);
11047 getOptional<std::vector<RallypointReflector>>(
"staticReflectors", p.staticReflectors, j);
11048 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
11049 getOptional<NetworkTxOptions>(
"multicastTxOptions", p.multicastTxOptions, j);
11050 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11051 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11052 getOptional<StringRestrictionList>(
"groupRestrictions", p.groupRestrictions, j);
11053 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
11054 getOptional<Licensing>(
"licensing", p.licensing, j);
11055 getOptional<Featureset>(
"featureset", p.featureset, j);
11056 getOptional<RallypointUdpStreaming>(
"udpStreaming", p.udpStreaming, j);
11057 getOptional<uint32_t>(
"sysFlags", p.sysFlags, j, 0);
11058 getOptional<uint32_t>(
"normalTaskQueueBias", p.normalTaskQueueBias, j, 0);
11059 getOptional<bool>(
"enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j,
false);
11060 getOptional<bool>(
"disableLoopDetection", p.disableLoopDetection, j,
false);
11061 getOptional<uint32_t>(
"maxSecurityLevel", p.maxSecurityLevel, j, 0);
11062 getOptional<RallypointServerRouteMap>(
"routeMap", p.routeMap, j);
11063 getOptional<RallypointServerStreamStatsExport>(
"streamStatsExport", p.streamStatsExport, j);
11064 getOptional<uint32_t>(
"maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
11065 getOptional<int>(
"peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
11066 getOptional<std::vector<RallypointRpRtTimingBehavior>>(
"peerRtBehaviors", p.peerRtBehaviors, j);
11067 getOptional<RallypointWebsocketSettings>(
"websocket", p.websocket, j);
11069 getOptional<RallypointAdvertisingSettings>(
"advertising", p.advertising, j);
11070 getOptional<RtiCloudSettings>(
"rtiCloud", p.rtiCloud, j);
11071 getOptional<std::vector<RallypointExtendedGroupRestriction>>(
"extendedGroupRestrictions", p.extendedGroupRestrictions, j);
11072 getOptional<GroupRestrictionAccessPolicyType_t>(
"groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
11073 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIp4);
11074 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
11075 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
11076 getOptional<std::string>(
"domainName", p.domainName, j);
11077 getOptional<std::vector<std::string>>(
"allowedDomains", p.allowedDomains, j);
11078 getOptional<std::vector<std::string>>(
"blockedDomains", p.blockedDomains, j);
11079 getOptional<std::vector<std::string>>(
"extraDomains", p.extraDomains, j);
11080 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11081 getOptional<std::vector<NamedIdentity>>(
"additionalIdentities", p.additionalIdentities, j);
11082 getOptional<RallypointServer::StreamIdPrivacyType_t>(
"streamIdPrivacyType", p.streamIdPrivacyType, j, RallypointServer::StreamIdPrivacyType_t::sptDefault);
11087 JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
11099 IMPLEMENT_JSON_SERIALIZATION()
11134 configurationVersion = 0;
11138 static void to_json(nlohmann::json& j,
const PlatformDiscoveredService& p)
11140 j = nlohmann::json{
11144 TOJSON_IMPL(address),
11146 TOJSON_IMPL(configurationVersion)
11149 static void from_json(
const nlohmann::json& j, PlatformDiscoveredService& p)
11152 getOptional<std::string>(
"id", p.id, j);
11153 getOptional<std::string>(
"type", p.type, j);
11154 getOptional<std::string>(
"name", p.name, j);
11155 getOptional<NetworkAddress>(
"address", p.address, j);
11156 getOptional<std::string>(
"uri", p.uri, j);
11157 getOptional<uint32_t>(
"configurationVersion", p.configurationVersion, j, 0);
11197 IMPLEMENT_JSON_SERIALIZATION()
11243 mostRecentFirst =
true;
11244 startedOnOrAfter = 0;
11245 endedOnOrBefore = 0;
11248 onlyCommitted =
true;
11250 onlyNodeId.clear();
11256 static void to_json(nlohmann::json& j,
const TimelineQueryParameters& p)
11258 j = nlohmann::json{
11259 TOJSON_IMPL(maxCount),
11260 TOJSON_IMPL(mostRecentFirst),
11261 TOJSON_IMPL(startedOnOrAfter),
11262 TOJSON_IMPL(endedOnOrBefore),
11263 TOJSON_IMPL(onlyDirection),
11264 TOJSON_IMPL(onlyType),
11265 TOJSON_IMPL(onlyCommitted),
11266 TOJSON_IMPL(onlyAlias),
11267 TOJSON_IMPL(onlyNodeId),
11268 TOJSON_IMPL(onlyTxId),
11272 static void from_json(
const nlohmann::json& j, TimelineQueryParameters& p)
11275 getOptional<long>(
"maxCount", p.maxCount, j, 50);
11276 getOptional<bool>(
"mostRecentFirst", p.mostRecentFirst, j,
false);
11277 getOptional<uint64_t>(
"startedOnOrAfter", p.startedOnOrAfter, j, 0);
11278 getOptional<uint64_t>(
"endedOnOrBefore", p.endedOnOrBefore, j, 0);
11279 getOptional<int>(
"onlyDirection", p.onlyDirection, j, 0);
11280 getOptional<int>(
"onlyType", p.onlyType, j, 0);
11281 getOptional<bool>(
"onlyCommitted", p.onlyCommitted, j,
true);
11282 getOptional<std::string>(
"onlyAlias", p.onlyAlias, j, EMPTY_STRING);
11283 getOptional<std::string>(
"onlyNodeId", p.onlyNodeId, j, EMPTY_STRING);
11284 getOptional<int>(
"onlyTxId", p.onlyTxId, j, 0);
11285 getOptional<std::string>(
"sql", p.sql, j, EMPTY_STRING);
11289 JSON_SERIALIZED_CLASS(CertStoreCertificate)
11298 IMPLEMENT_JSON_SERIALIZATION()
11325 certificatePem.clear();
11326 privateKeyPem.clear();
11327 internalData =
nullptr;
11332 static void to_json(nlohmann::json& j,
const CertStoreCertificate& p)
11334 j = nlohmann::json{
11336 TOJSON_IMPL(certificatePem),
11337 TOJSON_IMPL(privateKeyPem),
11341 static void from_json(
const nlohmann::json& j, CertStoreCertificate& p)
11344 j.at(
"id").get_to(p.id);
11345 j.at(
"certificatePem").get_to(p.certificatePem);
11346 getOptional<std::string>(
"privateKeyPem", p.privateKeyPem, j, EMPTY_STRING);
11347 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
11351 JSON_SERIALIZED_CLASS(CertStore)
11360 IMPLEMENT_JSON_SERIALIZATION()
11361 IMPLEMENT_JSON_DOCUMENTATION(
CertStore)
11381 certificates.clear();
11386 static void to_json(nlohmann::json& j,
const CertStore& p)
11388 j = nlohmann::json{
11390 TOJSON_IMPL(certificates),
11394 static void from_json(
const nlohmann::json& j, CertStore& p)
11397 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11398 getOptional<std::vector<CertStoreCertificate>>(
"certificates", p.certificates, j);
11399 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
11403 JSON_SERIALIZED_CLASS(CertStoreCertificateElement)
11412 IMPLEMENT_JSON_SERIALIZATION()
11436 hasPrivateKey =
false;
11441 static void to_json(nlohmann::json& j,
const CertStoreCertificateElement& p)
11443 j = nlohmann::json{
11445 TOJSON_IMPL(hasPrivateKey),
11449 if(!p.certificatePem.empty())
11451 j[
"certificatePem"] = p.certificatePem;
11454 static void from_json(
const nlohmann::json& j, CertStoreCertificateElement& p)
11457 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11458 getOptional<bool>(
"hasPrivateKey", p.hasPrivateKey, j,
false);
11459 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
11460 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
11464 JSON_SERIALIZED_CLASS(CertStoreDescriptor)
11473 IMPLEMENT_JSON_SERIALIZATION()
11506 certificates.clear();
11511 static void to_json(nlohmann::json& j,
const CertStoreDescriptor& p)
11513 j = nlohmann::json{
11515 TOJSON_IMPL(fileName),
11516 TOJSON_IMPL(version),
11517 TOJSON_IMPL(flags),
11518 TOJSON_IMPL(certificates),
11522 static void from_json(
const nlohmann::json& j, CertStoreDescriptor& p)
11525 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11526 getOptional<std::string>(
"fileName", p.fileName, j, EMPTY_STRING);
11527 getOptional<int>(
"version", p.version, j, 0);
11528 getOptional<int>(
"flags", p.flags, j, 0);
11529 getOptional<std::vector<CertStoreCertificateElement>>(
"certificates", p.certificates, j);
11530 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
11534 JSON_SERIALIZED_CLASS(CertificateSubjectElement)
11543 IMPLEMENT_JSON_SERIALIZATION()
11565 static void to_json(nlohmann::json& j,
const CertificateSubjectElement& p)
11567 j = nlohmann::json{
11572 static void from_json(
const nlohmann::json& j, CertificateSubjectElement& p)
11575 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
11576 getOptional<std::string>(
"value", p.value, j, EMPTY_STRING);
11581 JSON_SERIALIZED_CLASS(CertificateDescriptor)
11590 IMPLEMENT_JSON_SERIALIZATION()
11639 selfSigned =
false;
11644 fingerprint.clear();
11645 subjectElements.clear();
11646 issuerElements.clear();
11647 certificatePem.clear();
11648 publicKeyPem.clear();
11652 static void to_json(nlohmann::json& j,
const CertificateDescriptor& p)
11654 j = nlohmann::json{
11655 TOJSON_IMPL(subject),
11656 TOJSON_IMPL(issuer),
11657 TOJSON_IMPL(selfSigned),
11658 TOJSON_IMPL(version),
11659 TOJSON_IMPL(notBefore),
11660 TOJSON_IMPL(notAfter),
11661 TOJSON_IMPL(serial),
11662 TOJSON_IMPL(fingerprint),
11663 TOJSON_IMPL(subjectElements),
11664 TOJSON_IMPL(issuerElements),
11665 TOJSON_IMPL(certificatePem),
11666 TOJSON_IMPL(publicKeyPem)
11669 static void from_json(
const nlohmann::json& j, CertificateDescriptor& p)
11672 getOptional<std::string>(
"subject", p.subject, j, EMPTY_STRING);
11673 getOptional<std::string>(
"issuer", p.issuer, j, EMPTY_STRING);
11674 getOptional<bool>(
"selfSigned", p.selfSigned, j,
false);
11675 getOptional<int>(
"version", p.version, j, 0);
11676 getOptional<std::string>(
"notBefore", p.notBefore, j, EMPTY_STRING);
11677 getOptional<std::string>(
"notAfter", p.notAfter, j, EMPTY_STRING);
11678 getOptional<std::string>(
"serial", p.serial, j, EMPTY_STRING);
11679 getOptional<std::string>(
"fingerprint", p.fingerprint, j, EMPTY_STRING);
11680 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
11681 getOptional<std::string>(
"publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
11682 getOptional<std::vector<CertificateSubjectElement>>(
"subjectElements", p.subjectElements, j);
11683 getOptional<std::vector<CertificateSubjectElement>>(
"issuerElements", p.issuerElements, j);
11688 JSON_SERIALIZED_CLASS(RiffDescriptor)
11700 IMPLEMENT_JSON_SERIALIZATION()
11741 certDescriptor.clear();
11746 static void to_json(nlohmann::json& j,
const RiffDescriptor& p)
11748 j = nlohmann::json{
11750 TOJSON_IMPL(verified),
11751 TOJSON_IMPL(channels),
11752 TOJSON_IMPL(sampleCount),
11754 TOJSON_IMPL(certPem),
11755 TOJSON_IMPL(certDescriptor),
11756 TOJSON_IMPL(signature)
11760 static void from_json(
const nlohmann::json& j, RiffDescriptor& p)
11763 FROMJSON_IMPL(file, std::string, EMPTY_STRING);
11764 FROMJSON_IMPL(verified,
bool,
false);
11765 FROMJSON_IMPL(channels,
int, 0);
11766 FROMJSON_IMPL(sampleCount,
int, 0);
11767 FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
11768 FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
11769 getOptional<CertificateDescriptor>(
"certDescriptor", p.certDescriptor, j);
11770 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
11775 JSON_SERIALIZED_CLASS(BridgeCreationDetail)
11784 IMPLEMENT_JSON_SERIALIZATION()
11802 csAlreadyExists = -3,
11805 csInvalidConfiguration = -4,
11808 csInvalidJson = -5,
11811 csInsufficientGroups = -6,
11814 csTooManyGroups = -7,
11817 csDuplicateGroup = -8,
11820 csLocalLoopDetected = -9,
11821 } CreationStatus_t;
11837 status = csUndefined;
11841 static void to_json(nlohmann::json& j,
const BridgeCreationDetail& p)
11843 j = nlohmann::json{
11845 TOJSON_IMPL(status)
11848 static void from_json(
const nlohmann::json& j, BridgeCreationDetail& p)
11851 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11852 getOptional<BridgeCreationDetail::CreationStatus_t>(
"status", p.status, j, BridgeCreationDetail::CreationStatus_t::csUndefined);
11855 JSON_SERIALIZED_CLASS(GroupConnectionDetail)
11864 IMPLEMENT_JSON_SERIALIZATION()
11876 ctDirectDatagram = 1,
11880 } ConnectionType_t;
11905 connectionType = ctUndefined;
11907 asFailover =
false;
11912 static void to_json(nlohmann::json& j,
const GroupConnectionDetail& p)
11914 j = nlohmann::json{
11916 TOJSON_IMPL(connectionType),
11918 TOJSON_IMPL(asFailover),
11919 TOJSON_IMPL(reason)
11924 j[
"asFailover"] = p.asFailover;
11927 static void from_json(
const nlohmann::json& j, GroupConnectionDetail& p)
11930 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11931 getOptional<GroupConnectionDetail::ConnectionType_t>(
"connectionType", p.connectionType, j, GroupConnectionDetail::ConnectionType_t::ctUndefined);
11932 getOptional<std::string>(
"peer", p.peer, j, EMPTY_STRING);
11933 getOptional<bool>(
"asFailover", p.asFailover, j,
false);
11934 getOptional<std::string>(
"reason", p.reason, j, EMPTY_STRING);
11938 JSON_SERIALIZED_CLASS(GroupTxDetail)
11947 IMPLEMENT_JSON_SERIALIZATION()
11965 txsNotAnAudioGroup = -1,
11971 txsNotConnected = -3,
11974 txsAlreadyTransmitting = -4,
11977 txsInvalidParams = -5,
11980 txsPriorityTooLow = -6,
11983 txsRxActiveOnNonFdx = -7,
11986 txsCannotSubscribeToInput = -8,
11992 txsTxEndedWithFailure = -10,
11995 txsBridgedButNotMultistream = -11,
11998 txsAutoEndedDueToNonMultistreamBridge = -12,
12001 txsReBeginWithoutPriorBegin = -13
12030 status = txsUndefined;
12032 remotePriority = 0;
12033 nonFdxMsHangRemaining = 0;
12038 static void to_json(nlohmann::json& j,
const GroupTxDetail& p)
12040 j = nlohmann::json{
12042 TOJSON_IMPL(status),
12043 TOJSON_IMPL(localPriority),
12048 if(p.status == GroupTxDetail::TxStatus_t::txsPriorityTooLow)
12050 j[
"remotePriority"] = p.remotePriority;
12052 else if(p.status == GroupTxDetail::TxStatus_t::txsRxActiveOnNonFdx)
12054 j[
"nonFdxMsHangRemaining"] = p.nonFdxMsHangRemaining;
12057 static void from_json(
const nlohmann::json& j, GroupTxDetail& p)
12060 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
12061 getOptional<GroupTxDetail::TxStatus_t>(
"status", p.status, j, GroupTxDetail::TxStatus_t::txsUndefined);
12062 getOptional<int>(
"localPriority", p.localPriority, j, 0);
12063 getOptional<int>(
"remotePriority", p.remotePriority, j, 0);
12064 getOptional<long>(
"nonFdxMsHangRemaining", p.nonFdxMsHangRemaining, j, 0);
12065 getOptional<uint32_t>(
"txId", p.txId, j, 0);
12069 JSON_SERIALIZED_CLASS(GroupCreationDetail)
12078 IMPLEMENT_JSON_SERIALIZATION()
12096 csConflictingRpListAndCluster = -2,
12099 csAlreadyExists = -3,
12102 csInvalidConfiguration = -4,
12105 csInvalidJson = -5,
12108 csCryptoFailure = -6,
12111 csAudioInputFailure = -7,
12114 csAudioOutputFailure = -8,
12117 csUnsupportedAudioEncoder = -9,
12123 csInvalidTransport = -11,
12126 csAudioInputDeviceNotFound = -12,
12129 csAudioOutputDeviceNotFound = -13
12130 } CreationStatus_t;
12146 status = csUndefined;
12150 static void to_json(nlohmann::json& j,
const GroupCreationDetail& p)
12152 j = nlohmann::json{
12154 TOJSON_IMPL(status)
12157 static void from_json(
const nlohmann::json& j, GroupCreationDetail& p)
12160 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
12161 getOptional<GroupCreationDetail::CreationStatus_t>(
"status", p.status, j, GroupCreationDetail::CreationStatus_t::csUndefined);
12166 JSON_SERIALIZED_CLASS(GroupReconfigurationDetail)
12175 IMPLEMENT_JSON_SERIALIZATION()
12193 rsInvalidConfiguration = -2,
12196 rsInvalidJson = -3,
12199 rsAudioInputFailure = -4,
12202 rsAudioOutputFailure = -5,
12205 rsDoesNotExist = -6,
12208 rsAudioInputInUse = -7,
12211 rsAudioDisabledForGroup = -8,
12214 rsGroupIsNotAudio = -9
12215 } ReconfigurationStatus_t;
12231 status = rsUndefined;
12235 static void to_json(nlohmann::json& j,
const GroupReconfigurationDetail& p)
12237 j = nlohmann::json{
12239 TOJSON_IMPL(status)
12242 static void from_json(
const nlohmann::json& j, GroupReconfigurationDetail& p)
12245 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
12246 getOptional<GroupReconfigurationDetail::ReconfigurationStatus_t>(
"status", p.status, j, GroupReconfigurationDetail::ReconfigurationStatus_t::rsUndefined);
12251 JSON_SERIALIZED_CLASS(GroupHealthReport)
12260 IMPLEMENT_JSON_SERIALIZATION()
12266 uint64_t lastErrorTs;
12267 uint64_t decryptionErrors;
12268 uint64_t encryptionErrors;
12269 uint64_t unsupportDecoderErrors;
12270 uint64_t decoderFailures;
12271 uint64_t decoderStartFailures;
12272 uint64_t inboundRtpPacketAllocationFailures;
12273 uint64_t inboundRtpPacketLoadFailures;
12274 uint64_t latePacketsDiscarded;
12275 uint64_t jitterBufferInsertionFailures;
12276 uint64_t presenceDeserializationFailures;
12277 uint64_t notRtpErrors;
12278 uint64_t generalErrors;
12279 uint64_t inboundRtpProcessorAllocationFailures;
12290 decryptionErrors = 0;
12291 encryptionErrors = 0;
12292 unsupportDecoderErrors = 0;
12293 decoderFailures = 0;
12294 decoderStartFailures = 0;
12295 inboundRtpPacketAllocationFailures = 0;
12296 inboundRtpPacketLoadFailures = 0;
12297 latePacketsDiscarded = 0;
12298 jitterBufferInsertionFailures = 0;
12299 presenceDeserializationFailures = 0;
12302 inboundRtpProcessorAllocationFailures = 0;
12308 j = nlohmann::json{
12310 TOJSON_IMPL(lastErrorTs),
12311 TOJSON_IMPL(decryptionErrors),
12312 TOJSON_IMPL(encryptionErrors),
12313 TOJSON_IMPL(unsupportDecoderErrors),
12314 TOJSON_IMPL(decoderFailures),
12315 TOJSON_IMPL(decoderStartFailures),
12316 TOJSON_IMPL(inboundRtpPacketAllocationFailures),
12317 TOJSON_IMPL(inboundRtpPacketLoadFailures),
12318 TOJSON_IMPL(latePacketsDiscarded),
12319 TOJSON_IMPL(jitterBufferInsertionFailures),
12320 TOJSON_IMPL(presenceDeserializationFailures),
12321 TOJSON_IMPL(notRtpErrors),
12322 TOJSON_IMPL(generalErrors),
12323 TOJSON_IMPL(inboundRtpProcessorAllocationFailures)
12326 static void from_json(
const nlohmann::json& j, GroupHealthReport& p)
12329 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
12330 getOptional<uint64_t>(
"lastErrorTs", p.lastErrorTs, j, 0);
12331 getOptional<uint64_t>(
"decryptionErrors", p.decryptionErrors, j, 0);
12332 getOptional<uint64_t>(
"encryptionErrors", p.encryptionErrors, j, 0);
12333 getOptional<uint64_t>(
"unsupportDecoderErrors", p.unsupportDecoderErrors, j, 0);
12334 getOptional<uint64_t>(
"decoderFailures", p.decoderFailures, j, 0);
12335 getOptional<uint64_t>(
"decoderStartFailures", p.decoderStartFailures, j, 0);
12336 getOptional<uint64_t>(
"inboundRtpPacketAllocationFailures", p.inboundRtpPacketAllocationFailures, j, 0);
12337 getOptional<uint64_t>(
"inboundRtpPacketLoadFailures", p.inboundRtpPacketLoadFailures, j, 0);
12338 getOptional<uint64_t>(
"latePacketsDiscarded", p.latePacketsDiscarded, j, 0);
12339 getOptional<uint64_t>(
"jitterBufferInsertionFailures", p.jitterBufferInsertionFailures, j, 0);
12340 getOptional<uint64_t>(
"presenceDeserializationFailures", p.presenceDeserializationFailures, j, 0);
12341 getOptional<uint64_t>(
"notRtpErrors", p.notRtpErrors, j, 0);
12342 getOptional<uint64_t>(
"generalErrors", p.generalErrors, j, 0);
12343 getOptional<uint64_t>(
"inboundRtpProcessorAllocationFailures", p.inboundRtpProcessorAllocationFailures, j, 0);
12347 JSON_SERIALIZED_CLASS(InboundProcessorStats)
12356 IMPLEMENT_JSON_SERIALIZATION()
12363 uint64_t minRtpSamplesInQueue;
12364 uint64_t maxRtpSamplesInQueue;
12365 uint64_t totalSamplesTrimmed;
12366 uint64_t underruns;
12368 uint64_t samplesInQueue;
12369 uint64_t totalPacketsReceived;
12370 uint64_t totalPacketsLost;
12371 uint64_t totalPacketsDiscarded;
12382 minRtpSamplesInQueue = 0;
12383 maxRtpSamplesInQueue = 0;
12384 totalSamplesTrimmed = 0;
12387 samplesInQueue = 0;
12388 totalPacketsReceived = 0;
12389 totalPacketsLost = 0;
12390 totalPacketsDiscarded = 0;
12396 j = nlohmann::json{
12398 TOJSON_IMPL(jitter),
12399 TOJSON_IMPL(minRtpSamplesInQueue),
12400 TOJSON_IMPL(maxRtpSamplesInQueue),
12401 TOJSON_IMPL(totalSamplesTrimmed),
12402 TOJSON_IMPL(underruns),
12403 TOJSON_IMPL(overruns),
12404 TOJSON_IMPL(samplesInQueue),
12405 TOJSON_IMPL(totalPacketsReceived),
12406 TOJSON_IMPL(totalPacketsLost),
12407 TOJSON_IMPL(totalPacketsDiscarded)
12410 static void from_json(
const nlohmann::json& j, InboundProcessorStats& p)
12413 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
12414 getOptional<double>(
"jitter", p.jitter, j, 0.0);
12415 getOptional<uint64_t>(
"minRtpSamplesInQueue", p.minRtpSamplesInQueue, j, 0);
12416 getOptional<uint64_t>(
"maxRtpSamplesInQueue", p.maxRtpSamplesInQueue, j, 0);
12417 getOptional<uint64_t>(
"totalSamplesTrimmed", p.totalSamplesTrimmed, j, 0);
12418 getOptional<uint64_t>(
"underruns", p.underruns, j, 0);
12419 getOptional<uint64_t>(
"overruns", p.overruns, j, 0);
12420 getOptional<uint64_t>(
"samplesInQueue", p.samplesInQueue, j, 0);
12421 getOptional<uint64_t>(
"totalPacketsReceived", p.totalPacketsReceived, j, 0);
12422 getOptional<uint64_t>(
"totalPacketsLost", p.totalPacketsLost, j, 0);
12423 getOptional<uint64_t>(
"totalPacketsDiscarded", p.totalPacketsDiscarded, j, 0);
12427 JSON_SERIALIZED_CLASS(TrafficCounter)
12436 IMPLEMENT_JSON_SERIALIZATION()
12460 j = nlohmann::json{
12461 TOJSON_IMPL(packets),
12462 TOJSON_IMPL(bytes),
12463 TOJSON_IMPL(errors)
12466 static void from_json(
const nlohmann::json& j, TrafficCounter& p)
12469 getOptional<uint64_t>(
"packets", p.packets, j, 0);
12470 getOptional<uint64_t>(
"bytes", p.bytes, j, 0);
12471 getOptional<uint64_t>(
"errors", p.errors, j, 0);
12475 JSON_SERIALIZED_CLASS(GroupStats)
12484 IMPLEMENT_JSON_SERIALIZATION()
12485 IMPLEMENT_WRAPPED_JSON_SERIALIZATION(
GroupStats)
12508 static void to_json(nlohmann::json& j,
const GroupStats& p)
12510 j = nlohmann::json{
12513 TOJSON_IMPL(rxTraffic),
12514 TOJSON_IMPL(txTraffic)
12517 static void from_json(
const nlohmann::json& j, GroupStats& p)
12520 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
12522 getOptional<TrafficCounter>(
"rxTraffic", p.rxTraffic, j);
12523 getOptional<TrafficCounter>(
"txTraffic", p.txTraffic, j);
12527 JSON_SERIALIZED_CLASS(RallypointConnectionDetail)
12536 IMPLEMENT_JSON_SERIALIZATION()
12563 internalId.clear();
12566 msToNextConnectionAttempt = 0;
12567 serverProcessingMs = -1.0f;
12571 static void to_json(nlohmann::json& j,
const RallypointConnectionDetail& p)
12573 j = nlohmann::json{
12574 TOJSON_IMPL(internalId),
12579 if(p.msToNextConnectionAttempt > 0)
12581 j[
"msToNextConnectionAttempt"] = p.msToNextConnectionAttempt;
12584 if(p.serverProcessingMs >= 0.0)
12586 j[
"serverProcessingMs"] = p.serverProcessingMs;
12589 static void from_json(
const nlohmann::json& j, RallypointConnectionDetail& p)
12592 getOptional<std::string>(
"internalId", p.internalId, j, EMPTY_STRING);
12593 getOptional<std::string>(
"host", p.host, j, EMPTY_STRING);
12594 getOptional<int>(
"port", p.port, j, 0);
12595 getOptional<uint64_t>(
"msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
12596 getOptional<float>(
"serverProcessingMs", p.serverProcessingMs, j, -1.0);
12600 JSON_SERIALIZED_CLASS(TranslationSession)
12612 IMPLEMENT_JSON_SERIALIZATION()
12642 static void to_json(nlohmann::json& j,
const TranslationSession& p)
12644 j = nlohmann::json{
12647 TOJSON_IMPL(groups),
12648 TOJSON_IMPL(enabled)
12651 static void from_json(
const nlohmann::json& j, TranslationSession& p)
12654 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
12655 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
12656 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
12657 FROMJSON_IMPL(enabled,
bool,
true);
12661 JSON_SERIALIZED_CLASS(TranslationConfiguration)
12673 IMPLEMENT_JSON_SERIALIZATION()
12695 static void to_json(nlohmann::json& j,
const TranslationConfiguration& p)
12697 j = nlohmann::json{
12698 TOJSON_IMPL(sessions),
12699 TOJSON_IMPL(groups)
12702 static void from_json(
const nlohmann::json& j, TranslationConfiguration& p)
12705 getOptional<std::vector<TranslationSession>>(
"sessions", p.sessions, j);
12706 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12710 JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
12722 IMPLEMENT_JSON_SERIALIZATION()
12757 includeGroupDetail =
false;
12758 includeSessionDetail =
false;
12759 includeSessionGroupDetail =
false;
12764 static void to_json(nlohmann::json& j,
const LingoServerStatusReportConfiguration& p)
12766 j = nlohmann::json{
12767 TOJSON_IMPL(fileName),
12768 TOJSON_IMPL(intervalSecs),
12769 TOJSON_IMPL(enabled),
12770 TOJSON_IMPL(includeGroupDetail),
12771 TOJSON_IMPL(includeSessionDetail),
12772 TOJSON_IMPL(includeSessionGroupDetail),
12773 TOJSON_IMPL(runCmd)
12776 static void from_json(
const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
12779 getOptional<std::string>(
"fileName", p.fileName, j);
12780 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12781 getOptional<bool>(
"enabled", p.enabled, j,
false);
12782 getOptional<std::string>(
"runCmd", p.runCmd, j);
12783 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12784 getOptional<bool>(
"includeSessionDetail", p.includeSessionDetail, j,
false);
12785 getOptional<bool>(
"includeSessionGroupDetail", p.includeSessionGroupDetail, j,
false);
12789 JSON_SERIALIZED_CLASS(LingoServerInternals)
12803 IMPLEMENT_JSON_SERIALIZATION()
12825 housekeeperIntervalMs = 1000;
12829 static void to_json(nlohmann::json& j,
const LingoServerInternals& p)
12831 j = nlohmann::json{
12832 TOJSON_IMPL(watchdog),
12833 TOJSON_IMPL(housekeeperIntervalMs),
12834 TOJSON_IMPL(tuning)
12837 static void from_json(
const nlohmann::json& j, LingoServerInternals& p)
12840 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12841 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12842 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12846 JSON_SERIALIZED_CLASS(LingoServerConfiguration)
12857 IMPLEMENT_JSON_SERIALIZATION()
12914 serviceConfigurationFileCheckSecs = 60;
12915 lingoConfigurationFileName.clear();
12916 lingoConfigurationFileCommand.clear();
12917 lingoConfigurationFileCheckSecs = 60;
12918 statusReport.clear();
12919 externalHealthCheckResponder.clear();
12921 certStoreFileName.clear();
12922 certStorePasswordHex.clear();
12923 enginePolicy.clear();
12924 configurationCheckSignalName =
"rts.22f4ec3.${id}";
12925 fipsCrypto.clear();
12931 static void to_json(nlohmann::json& j,
const LingoServerConfiguration& p)
12933 j = nlohmann::json{
12935 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12936 TOJSON_IMPL(lingoConfigurationFileName),
12937 TOJSON_IMPL(lingoConfigurationFileCommand),
12938 TOJSON_IMPL(lingoConfigurationFileCheckSecs),
12939 TOJSON_IMPL(statusReport),
12940 TOJSON_IMPL(externalHealthCheckResponder),
12941 TOJSON_IMPL(internals),
12942 TOJSON_IMPL(certStoreFileName),
12943 TOJSON_IMPL(certStorePasswordHex),
12944 TOJSON_IMPL(enginePolicy),
12945 TOJSON_IMPL(configurationCheckSignalName),
12946 TOJSON_IMPL(fipsCrypto),
12947 TOJSON_IMPL(proxy),
12951 static void from_json(
const nlohmann::json& j, LingoServerConfiguration& p)
12954 getOptional<std::string>(
"id", p.id, j);
12955 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12956 getOptional<std::string>(
"lingoConfigurationFileName", p.lingoConfigurationFileName, j);
12957 getOptional<std::string>(
"lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
12958 getOptional<int>(
"lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
12959 getOptional<LingoServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12960 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12961 getOptional<LingoServerInternals>(
"internals", p.internals, j);
12962 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12963 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12964 j.at(
"enginePolicy").get_to(p.enginePolicy);
12965 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.22f4ec3.${id}");
12966 getOptional<FipsCryptoSettings>(
"fipsCrypo", p.fipsCrypto, j);
12967 getOptional<NetworkAddress>(
"proxy", p.proxy, j);
12973 JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
12985 IMPLEMENT_JSON_SERIALIZATION()
13015 static void to_json(nlohmann::json& j,
const VoiceToVoiceSession& p)
13017 j = nlohmann::json{
13020 TOJSON_IMPL(groups),
13021 TOJSON_IMPL(enabled)
13024 static void from_json(
const nlohmann::json& j, VoiceToVoiceSession& p)
13027 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
13028 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
13029 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
13030 FROMJSON_IMPL(enabled,
bool,
true);
13034 JSON_SERIALIZED_CLASS(LingoConfiguration)
13046 IMPLEMENT_JSON_SERIALIZATION()
13063 voiceToVoiceSessions.clear();
13068 static void to_json(nlohmann::json& j,
const LingoConfiguration& p)
13070 j = nlohmann::json{
13071 TOJSON_IMPL(voiceToVoiceSessions),
13072 TOJSON_IMPL(groups)
13075 static void from_json(
const nlohmann::json& j, LingoConfiguration& p)
13078 getOptional<std::vector<VoiceToVoiceSession>>(
"voiceToVoiceSessions", p.voiceToVoiceSessions, j);
13079 getOptional<std::vector<Group>>(
"groups", p.groups, j);
13083 JSON_SERIALIZED_CLASS(BridgingConfiguration)
13095 IMPLEMENT_JSON_SERIALIZATION()
13117 static void to_json(nlohmann::json& j,
const BridgingConfiguration& p)
13119 j = nlohmann::json{
13120 TOJSON_IMPL(bridges),
13121 TOJSON_IMPL(groups)
13124 static void from_json(
const nlohmann::json& j, BridgingConfiguration& p)
13127 getOptional<std::vector<Bridge>>(
"bridges", p.bridges, j);
13128 getOptional<std::vector<Group>>(
"groups", p.groups, j);
13132 JSON_SERIALIZED_CLASS(BridgingServerStatusReportConfiguration)
13144 IMPLEMENT_JSON_SERIALIZATION()
13179 includeGroupDetail =
false;
13180 includeBridgeDetail =
false;
13181 includeBridgeGroupDetail =
false;
13186 static void to_json(nlohmann::json& j,
const BridgingServerStatusReportConfiguration& p)
13188 j = nlohmann::json{
13189 TOJSON_IMPL(fileName),
13190 TOJSON_IMPL(intervalSecs),
13191 TOJSON_IMPL(enabled),
13192 TOJSON_IMPL(includeGroupDetail),
13193 TOJSON_IMPL(includeBridgeDetail),
13194 TOJSON_IMPL(includeBridgeGroupDetail),
13195 TOJSON_IMPL(runCmd)
13198 static void from_json(
const nlohmann::json& j, BridgingServerStatusReportConfiguration& p)
13201 getOptional<std::string>(
"fileName", p.fileName, j);
13202 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
13203 getOptional<bool>(
"enabled", p.enabled, j,
false);
13204 getOptional<std::string>(
"runCmd", p.runCmd, j);
13205 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
13206 getOptional<bool>(
"includeBridgeDetail", p.includeBridgeDetail, j,
false);
13207 getOptional<bool>(
"includeBridgeGroupDetail", p.includeBridgeGroupDetail, j,
false);
13211 JSON_SERIALIZED_CLASS(BridgingServerInternals)
13225 IMPLEMENT_JSON_SERIALIZATION()
13255 housekeeperIntervalMs = 1000;
13256 nsmUnhealthyBridgeGraceMs = 5000;
13257 nsmResourceReleaseCooldownMs = 30000;
13261 static void to_json(nlohmann::json& j,
const BridgingServerInternals& p)
13263 j = nlohmann::json{
13264 TOJSON_IMPL(watchdog),
13265 TOJSON_IMPL(housekeeperIntervalMs),
13266 TOJSON_IMPL(nsmUnhealthyBridgeGraceMs),
13267 TOJSON_IMPL(nsmResourceReleaseCooldownMs),
13268 TOJSON_IMPL(tuning)
13271 static void from_json(
const nlohmann::json& j, BridgingServerInternals& p)
13274 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
13275 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
13276 getOptional<int>(
"nsmUnhealthyBridgeGraceMs", p.nsmUnhealthyBridgeGraceMs, j, 5000);
13277 getOptional<int>(
"nsmResourceReleaseCooldownMs", p.nsmResourceReleaseCooldownMs, j, 30000);
13278 getOptional<TuningSettings>(
"tuning", p.tuning, j);
13282 JSON_SERIALIZED_CLASS(BridgingServerConfiguration)
13293 IMPLEMENT_JSON_SERIALIZATION()
13317 omADictatedByGroup = 3,
13381 serviceConfigurationFileCheckSecs = 60;
13382 bridgingConfigurationFileName.clear();
13383 bridgingConfigurationFileCommand.clear();
13384 bridgingConfigurationFileCheckSecs = 60;
13385 statusReport.clear();
13386 externalHealthCheckResponder.clear();
13388 certStoreFileName.clear();
13389 certStorePasswordHex.clear();
13390 enginePolicy.clear();
13391 configurationCheckSignalName =
"rts.6cc0651.${id}";
13392 fipsCrypto.clear();
13393 statusUpload.clear();
13399 static void to_json(nlohmann::json& j,
const BridgingServerConfiguration& p)
13401 j = nlohmann::json{
13404 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
13405 TOJSON_IMPL(bridgingConfigurationFileName),
13406 TOJSON_IMPL(bridgingConfigurationFileCommand),
13407 TOJSON_IMPL(bridgingConfigurationFileCheckSecs),
13408 TOJSON_IMPL(statusReport),
13409 TOJSON_IMPL(externalHealthCheckResponder),
13410 TOJSON_IMPL(internals),
13411 TOJSON_IMPL(certStoreFileName),
13412 TOJSON_IMPL(certStorePasswordHex),
13413 TOJSON_IMPL(enginePolicy),
13414 TOJSON_IMPL(configurationCheckSignalName),
13415 TOJSON_IMPL(fipsCrypto),
13416 TOJSON_IMPL(statusUpload),
13418 TOJSON_IMPL(rtiCloud)
13421 static void from_json(
const nlohmann::json& j, BridgingServerConfiguration& p)
13424 getOptional<std::string>(
"id", p.id, j);
13425 getOptional<BridgingServerConfiguration::OpMode_t>(
"mode", p.mode, j, BridgingServerConfiguration::OpMode_t::omRaw);
13426 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
13427 getOptional<std::string>(
"bridgingConfigurationFileName", p.bridgingConfigurationFileName, j);
13428 getOptional<std::string>(
"bridgingConfigurationFileCommand", p.bridgingConfigurationFileCommand, j);
13429 getOptional<int>(
"bridgingConfigurationFileCheckSecs", p.bridgingConfigurationFileCheckSecs, j, 60);
13430 getOptional<BridgingServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
13431 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
13432 getOptional<BridgingServerInternals>(
"internals", p.internals, j);
13433 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
13434 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
13435 j.at(
"enginePolicy").get_to(p.enginePolicy);
13436 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.6cc0651.${id}");
13437 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
13438 getOptional<StatusUploadConfiguration>(
"statusUpload", p.statusUpload, j);
13440 getOptional<RtiCloudSettings>(
"rtiCloud", p.rtiCloud, j);
13445 JSON_SERIALIZED_CLASS(EarGroupsConfiguration)
13457 IMPLEMENT_JSON_SERIALIZATION()
13475 static void to_json(nlohmann::json& j,
const EarGroupsConfiguration& p)
13477 j = nlohmann::json{
13478 TOJSON_IMPL(groups)
13481 static void from_json(
const nlohmann::json& j, EarGroupsConfiguration& p)
13484 getOptional<std::vector<Group>>(
"groups", p.groups, j);
13488 JSON_SERIALIZED_CLASS(EarServerStatusReportConfiguration)
13500 IMPLEMENT_JSON_SERIALIZATION()
13529 includeGroupDetail =
false;
13534 static void to_json(nlohmann::json& j,
const EarServerStatusReportConfiguration& p)
13536 j = nlohmann::json{
13537 TOJSON_IMPL(fileName),
13538 TOJSON_IMPL(intervalSecs),
13539 TOJSON_IMPL(enabled),
13540 TOJSON_IMPL(includeGroupDetail),
13541 TOJSON_IMPL(runCmd)
13544 static void from_json(
const nlohmann::json& j, EarServerStatusReportConfiguration& p)
13547 getOptional<std::string>(
"fileName", p.fileName, j);
13548 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
13549 getOptional<bool>(
"enabled", p.enabled, j,
false);
13550 getOptional<std::string>(
"runCmd", p.runCmd, j);
13551 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
13555 JSON_SERIALIZED_CLASS(EarServerInternals)
13569 IMPLEMENT_JSON_SERIALIZATION()
13591 housekeeperIntervalMs = 1000;
13595 static void to_json(nlohmann::json& j,
const EarServerInternals& p)
13597 j = nlohmann::json{
13598 TOJSON_IMPL(watchdog),
13599 TOJSON_IMPL(housekeeperIntervalMs),
13600 TOJSON_IMPL(tuning)
13603 static void from_json(
const nlohmann::json& j, EarServerInternals& p)
13606 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
13607 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
13608 getOptional<TuningSettings>(
"tuning", p.tuning, j);
13612 JSON_SERIALIZED_CLASS(EarServerConfiguration)
13623 IMPLEMENT_JSON_SERIALIZATION()
13678 serviceConfigurationFileCheckSecs = 60;
13679 groupsConfigurationFileName.clear();
13680 groupsConfigurationFileCommand.clear();
13681 groupsConfigurationFileCheckSecs = 60;
13682 statusReport.clear();
13683 externalHealthCheckResponder.clear();
13685 certStoreFileName.clear();
13686 certStorePasswordHex.clear();
13687 enginePolicy.clear();
13688 configurationCheckSignalName =
"rts.9a164fa.${id}";
13689 fipsCrypto.clear();
13694 static void to_json(nlohmann::json& j,
const EarServerConfiguration& p)
13696 j = nlohmann::json{
13698 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
13699 TOJSON_IMPL(groupsConfigurationFileName),
13700 TOJSON_IMPL(groupsConfigurationFileCommand),
13701 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
13702 TOJSON_IMPL(statusReport),
13703 TOJSON_IMPL(externalHealthCheckResponder),
13704 TOJSON_IMPL(internals),
13705 TOJSON_IMPL(certStoreFileName),
13706 TOJSON_IMPL(certStorePasswordHex),
13707 TOJSON_IMPL(enginePolicy),
13708 TOJSON_IMPL(configurationCheckSignalName),
13709 TOJSON_IMPL(fipsCrypto),
13713 static void from_json(
const nlohmann::json& j, EarServerConfiguration& p)
13716 getOptional<std::string>(
"id", p.id, j);
13717 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
13718 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
13719 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
13720 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
13721 getOptional<EarServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
13722 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
13723 getOptional<EarServerInternals>(
"internals", p.internals, j);
13724 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
13725 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
13726 j.at(
"enginePolicy").get_to(p.enginePolicy);
13727 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
13728 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
13733 JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
13745 IMPLEMENT_JSON_SERIALIZATION()
13763 static void to_json(nlohmann::json& j,
const EngageSemGroupsConfiguration& p)
13765 j = nlohmann::json{
13766 TOJSON_IMPL(groups)
13769 static void from_json(
const nlohmann::json& j, EngageSemGroupsConfiguration& p)
13772 getOptional<std::vector<Group>>(
"groups", p.groups, j);
13776 JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
13788 IMPLEMENT_JSON_SERIALIZATION()
13817 includeGroupDetail =
false;
13822 static void to_json(nlohmann::json& j,
const EngageSemServerStatusReportConfiguration& p)
13824 j = nlohmann::json{
13825 TOJSON_IMPL(fileName),
13826 TOJSON_IMPL(intervalSecs),
13827 TOJSON_IMPL(enabled),
13828 TOJSON_IMPL(includeGroupDetail),
13829 TOJSON_IMPL(runCmd)
13832 static void from_json(
const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
13835 getOptional<std::string>(
"fileName", p.fileName, j);
13836 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
13837 getOptional<bool>(
"enabled", p.enabled, j,
false);
13838 getOptional<std::string>(
"runCmd", p.runCmd, j);
13839 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
13843 JSON_SERIALIZED_CLASS(EngageSemServerInternals)
13857 IMPLEMENT_JSON_SERIALIZATION()
13879 housekeeperIntervalMs = 1000;
13883 static void to_json(nlohmann::json& j,
const EngageSemServerInternals& p)
13885 j = nlohmann::json{
13886 TOJSON_IMPL(watchdog),
13887 TOJSON_IMPL(housekeeperIntervalMs),
13888 TOJSON_IMPL(tuning)
13891 static void from_json(
const nlohmann::json& j, EngageSemServerInternals& p)
13894 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
13895 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
13896 getOptional<TuningSettings>(
"tuning", p.tuning, j);
13900 JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
13911 IMPLEMENT_JSON_SERIALIZATION()
13972 serviceConfigurationFileCheckSecs = 60;
13973 groupsConfigurationFileName.clear();
13974 groupsConfigurationFileCommand.clear();
13975 groupsConfigurationFileCheckSecs = 60;
13976 statusReport.clear();
13977 externalHealthCheckResponder.clear();
13979 certStoreFileName.clear();
13980 certStorePasswordHex.clear();
13981 enginePolicy.clear();
13982 configurationCheckSignalName =
"rts.9a164fa.${id}";
13983 fipsCrypto.clear();
13988 maxQueuingMs = 15000;
13994 static void to_json(nlohmann::json& j,
const EngageSemServerConfiguration& p)
13996 j = nlohmann::json{
13998 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
13999 TOJSON_IMPL(groupsConfigurationFileName),
14000 TOJSON_IMPL(groupsConfigurationFileCommand),
14001 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
14002 TOJSON_IMPL(statusReport),
14003 TOJSON_IMPL(externalHealthCheckResponder),
14004 TOJSON_IMPL(internals),
14005 TOJSON_IMPL(certStoreFileName),
14006 TOJSON_IMPL(certStorePasswordHex),
14007 TOJSON_IMPL(enginePolicy),
14008 TOJSON_IMPL(configurationCheckSignalName),
14009 TOJSON_IMPL(fipsCrypto),
14011 TOJSON_IMPL(maxQueueLen),
14012 TOJSON_IMPL(minQueuingMs),
14013 TOJSON_IMPL(maxQueuingMs),
14014 TOJSON_IMPL(minPriority),
14015 TOJSON_IMPL(maxPriority)
14018 static void from_json(
const nlohmann::json& j, EngageSemServerConfiguration& p)
14021 getOptional<std::string>(
"id", p.id, j);
14022 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
14023 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
14024 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
14025 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
14026 getOptional<EngageSemServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
14027 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
14028 getOptional<EngageSemServerInternals>(
"internals", p.internals, j);
14029 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
14030 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
14031 j.at(
"enginePolicy").get_to(p.enginePolicy);
14032 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
14033 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
14035 getOptional<int>(
"maxQueueLen", p.maxQueueLen, j, 64);
14036 getOptional<int>(
"minQueuingMs", p.minQueuingMs, j, 0);
14037 getOptional<int>(
"maxQueuingMs", p.maxQueuingMs, j, 15000);
14038 getOptional<int>(
"minPriority", p.minPriority, j, 0);
14039 getOptional<int>(
"maxPriority", p.maxPriority, j, 255);
14043 JSON_SERIALIZED_CLASS(EngateGroup)
14055 IMPLEMENT_JSON_SERIALIZATION()
14060 uint32_t inputHangMs;
14061 uint32_t inputActivationPowerThreshold;
14062 uint32_t inputDeactivationPowerThreshold;
14074 inputActivationPowerThreshold = 700;
14075 inputDeactivationPowerThreshold = 125;
14079 static void to_json(nlohmann::json& j,
const EngateGroup& p)
14082 to_json(g,
static_cast<const Group&
>(p));
14084 j = nlohmann::json{
14085 TOJSON_IMPL(useVad),
14086 TOJSON_IMPL(inputHangMs),
14087 TOJSON_IMPL(inputActivationPowerThreshold),
14088 TOJSON_IMPL(inputDeactivationPowerThreshold)
14091 static void from_json(
const nlohmann::json& j, EngateGroup& p)
14094 from_json(j,
static_cast<Group&
>(p));
14095 getOptional<uint32_t>(
"inputHangMs", p.inputHangMs, j, 750);
14096 getOptional<uint32_t>(
"inputActivationPowerThreshold", p.inputActivationPowerThreshold, j, 700);
14097 getOptional<uint32_t>(
"inputDeactivationPowerThreshold", p.inputDeactivationPowerThreshold, j, 125);
14101 JSON_SERIALIZED_CLASS(EngateGroupsConfiguration)
14113 IMPLEMENT_JSON_SERIALIZATION()
14131 static void to_json(nlohmann::json& j,
const EngateGroupsConfiguration& p)
14133 j = nlohmann::json{
14134 TOJSON_IMPL(groups)
14137 static void from_json(
const nlohmann::json& j, EngateGroupsConfiguration& p)
14140 getOptional<std::vector<EngateGroup>>(
"groups", p.groups, j);
14144 JSON_SERIALIZED_CLASS(EngateServerStatusReportConfiguration)
14156 IMPLEMENT_JSON_SERIALIZATION()
14185 includeGroupDetail =
false;
14190 static void to_json(nlohmann::json& j,
const EngateServerStatusReportConfiguration& p)
14192 j = nlohmann::json{
14193 TOJSON_IMPL(fileName),
14194 TOJSON_IMPL(intervalSecs),
14195 TOJSON_IMPL(enabled),
14196 TOJSON_IMPL(includeGroupDetail),
14197 TOJSON_IMPL(runCmd)
14200 static void from_json(
const nlohmann::json& j, EngateServerStatusReportConfiguration& p)
14203 getOptional<std::string>(
"fileName", p.fileName, j);
14204 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
14205 getOptional<bool>(
"enabled", p.enabled, j,
false);
14206 getOptional<std::string>(
"runCmd", p.runCmd, j);
14207 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
14211 JSON_SERIALIZED_CLASS(EngateServerInternals)
14225 IMPLEMENT_JSON_SERIALIZATION()
14247 housekeeperIntervalMs = 1000;
14251 static void to_json(nlohmann::json& j,
const EngateServerInternals& p)
14253 j = nlohmann::json{
14254 TOJSON_IMPL(watchdog),
14255 TOJSON_IMPL(housekeeperIntervalMs),
14256 TOJSON_IMPL(tuning)
14259 static void from_json(
const nlohmann::json& j, EngateServerInternals& p)
14262 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
14263 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
14264 getOptional<TuningSettings>(
"tuning", p.tuning, j);
14268 JSON_SERIALIZED_CLASS(EngateServerConfiguration)
14279 IMPLEMENT_JSON_SERIALIZATION()
14334 serviceConfigurationFileCheckSecs = 60;
14335 groupsConfigurationFileName.clear();
14336 groupsConfigurationFileCommand.clear();
14337 groupsConfigurationFileCheckSecs = 60;
14338 statusReport.clear();
14339 externalHealthCheckResponder.clear();
14341 certStoreFileName.clear();
14342 certStorePasswordHex.clear();
14343 enginePolicy.clear();
14344 configurationCheckSignalName =
"rts.9a164fa.${id}";
14345 fipsCrypto.clear();
14350 static void to_json(nlohmann::json& j,
const EngateServerConfiguration& p)
14352 j = nlohmann::json{
14354 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
14355 TOJSON_IMPL(groupsConfigurationFileName),
14356 TOJSON_IMPL(groupsConfigurationFileCommand),
14357 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
14358 TOJSON_IMPL(statusReport),
14359 TOJSON_IMPL(externalHealthCheckResponder),
14360 TOJSON_IMPL(internals),
14361 TOJSON_IMPL(certStoreFileName),
14362 TOJSON_IMPL(certStorePasswordHex),
14363 TOJSON_IMPL(enginePolicy),
14364 TOJSON_IMPL(configurationCheckSignalName),
14365 TOJSON_IMPL(fipsCrypto),
14369 static void from_json(
const nlohmann::json& j, EngateServerConfiguration& p)
14372 getOptional<std::string>(
"id", p.id, j);
14373 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
14374 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
14375 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
14376 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
14377 getOptional<EngateServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
14378 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
14379 getOptional<EngateServerInternals>(
"internals", p.internals, j);
14380 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
14381 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
14382 j.at(
"enginePolicy").get_to(p.enginePolicy);
14383 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
14384 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
14389 static inline void dumpExampleConfigurations(
const char *path)
14391 WatchdogSettings::document();
14392 FileRecordingRequest::document();
14393 Feature::document();
14394 Featureset::document();
14396 RtpPayloadTypeTranslation::document();
14397 NetworkInterfaceDevice::document();
14398 ListOfNetworkInterfaceDevice::document();
14399 RtpHeader::document();
14400 BlobInfo::document();
14401 TxAudioUri::document();
14402 AdvancedTxParams::document();
14403 Identity::document();
14404 Location::document();
14406 Connectivity::document();
14407 PresenceDescriptorGroupItem::document();
14408 PresenceDescriptor::document();
14409 NetworkTxOptions::document();
14410 TcpNetworkTxOptions::document();
14411 NetworkAddress::document();
14412 NetworkAddressRxTx::document();
14413 NetworkAddressRestrictionList::document();
14414 StringRestrictionList::document();
14415 Rallypoint::document();
14416 RallypointCluster::document();
14417 NetworkDeviceDescriptor::document();
14418 TxAudio::document();
14419 AudioDeviceDescriptor::document();
14420 ListOfAudioDeviceDescriptor::document();
14422 TalkerInformation::document();
14423 GroupTalkers::document();
14424 Presence::document();
14425 Advertising::document();
14426 GroupPriorityTranslation::document();
14427 GroupTimeline::document();
14428 GroupAppTransport::document();
14429 RtpProfile::document();
14431 Mission::document();
14432 LicenseDescriptor::document();
14433 EngineNetworkingRpUdpStreaming::document();
14434 EnginePolicyNetworking::document();
14437 Bridge::document();
14438 AndroidAudio::document();
14439 EnginePolicyAudio::document();
14440 SecurityCertificate::document();
14441 EnginePolicySecurity::document();
14442 EnginePolicyLogging::document();
14443 EnginePolicyDatabase::document();
14444 NamedAudioDevice::document();
14445 EnginePolicyNamedAudioDevices::document();
14446 Licensing::document();
14447 DiscoveryMagellan::document();
14448 DiscoverySsdp::document();
14449 DiscoverySap::document();
14450 DiscoveryCistech::document();
14451 DiscoveryTrellisware::document();
14452 DiscoveryConfiguration::document();
14453 ApiCallPacingLaneSettings::document();
14454 ApiCallPacingSettings::document();
14455 EnginePolicyInternals::document();
14456 EnginePolicyTimelines::document();
14457 RtpMapEntry::document();
14458 ExternalModule::document();
14459 ExternalCodecDescriptor::document();
14460 EnginePolicy::document();
14461 TalkgroupAsset::document();
14462 EngageDiscoveredGroup::document();
14463 RallypointPeer::document();
14464 RallypointServerLimits::document();
14465 RallypointServerStatusReportConfiguration::document();
14466 RallypointServerLinkGraph::document();
14467 ExternalHealthCheckResponder::document();
14469 PeeringConfiguration::document();
14470 IgmpSnooping::document();
14471 RallypointReflector::document();
14472 RallypointUdpStreaming::document();
14473 RallypointServer::document();
14474 PlatformDiscoveredService::document();
14475 TimelineQueryParameters::document();
14476 CertStoreCertificate::document();
14477 CertStore::document();
14478 CertStoreCertificateElement::document();
14479 CertStoreDescriptor::document();
14480 CertificateDescriptor::document();
14481 BridgeCreationDetail::document();
14482 GroupConnectionDetail::document();
14483 GroupTxDetail::document();
14484 GroupCreationDetail::document();
14485 GroupReconfigurationDetail::document();
14486 GroupHealthReport::document();
14487 InboundProcessorStats::document();
14488 TrafficCounter::document();
14489 GroupStats::document();
14490 RallypointConnectionDetail::document();
14491 BridgingConfiguration::document();
14492 BridgingServerStatusReportConfiguration::document();
14493 StatusUploadConfiguration::document();
14494 BridgingServerInternals::document();
14495 RtiCloudSettings::document();
14496 BridgingServerConfiguration::document();
14497 EarGroupsConfiguration::document();
14498 EarServerStatusReportConfiguration::document();
14499 EarServerInternals::document();
14500 EarServerConfiguration::document();
14501 RangerPackets::document();
14502 TransportImpairment::document();
14504 EngageSemGroupsConfiguration::document();
14505 EngageSemServerStatusReportConfiguration::document();
14506 EngageSemServerInternals::document();
14507 EngageSemServerConfiguration::document();
14512 #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.
static void bridgingServerNsmFromJson(const nlohmann::json &j, NsmSettings &nsm)
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
Pacing settings for a single Engage API call lane.
int intervalMs
[Optional, Default: 0] Minimum milliseconds between API calls on this lane. 0 disables pacing.
uint32_t maxQueueDepth
[Optional, Default: 512] Maximum number of pending paced calls on this lane. 0 uses the default.
Optional pacing for asynchronous Engage API calls.
ApiCallPacingLaneSettings configuration
[Optional] Pacing for configuration-related API calls.
ApiCallPacingLaneSettings transmission
[Optional] Pacing for transmission-related API calls.
ApiCallPacingLaneSettings topology
[Optional] Pacing for topology mutations (e.g. engageCreateGroup).
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.
NsmSettings nsm
[Optional] Embedded NSM settings (shared statusReport + nodes[]). JSON key nsm. Legacy top-level nsmN...
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)
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.
StatusUploadConfiguration statusUpload
[Optional] Process-level HTTP upload for status reports (EBS and embedded NSM).
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] Base time to wait before declaring an owned bridge unhealthy for NSM releas...
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.
Noise suppression (RNNoise) tuning settings.
float vadGate
[Optional, Default: 0.0] Min speech probability for full NS; 0 = always apply mix
std::string model
[Optional, Default: ""] Path to RNNoise weights blob; empty = built-in little model
float mix
[Optional, Default: 1.0] Wet/dry mix; 1.0 = fully denoised, 0.0 = original
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
Denoiser denoiser
[Optional] Noise suppression tuning (mix / model / vadGate)
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
ApiCallPacingSettings apiCallPacing
[Optional] Pacing for selected asynchronous Engage API calls.
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).
Optional per-resource health gate while ACTIVE.
int unhealthyGraceMs
[Optional, Default: 5000] Ms unhealthy before voluntary release.
int releaseCooldownSecs
[Optional, Default: 30] Seconds to suppress re-election after release.
bool enabled
[Optional, Default: false] When true, poll runCmd while resources are ACTIVE.
bool failClosed
[Optional, Default: true] When true, runCmd failure/timeout is treated as unhealthy.
std::string runCmd
Shell command; trimmed stdout must be 1 (healthy) or 0 (unhealthy).
int intervalSecs
[Optional, Default: 5] Seconds between health polls per ACTIVE resource.
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.
NsmNodeElectionGateSettings electionGate
Optional external gate for election wire participation (Seeker active/standby, etc....
NsmNodeActiveHealthCheckSettings activeHealthCheck
Optional per-resource health monitoring while ACTIVE.
WatchdogSettings watchdog
[Optional] Settings for the node's watchdog.
StatusUploadConfiguration statusUpload
[Optional] Process-level status report HTTP upload (standalone nsmd). Ignored when embedded; host pas...
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
std::string domainId
Logical domain id for this election channel. Required and unique when more than one NSM node is confi...
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
NsmNodeStatusReportImmediateConfiguration immediate
Embedded NSM settings for multi-node hosts (e.g. EBS).
NsmNodeStatusReportConfiguration statusReport
Shared status-report settings applied to each node (fileName may use ${id} = node id).
std::vector< NsmNode > nodes
Embedded NSM election fabrics (one per MANET / multicast domain).
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 sni
[Optional] A user-defined string sent as the Server Name Indication (SNI) field in the TLS setup when...
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
StatusUploadConfiguration statusUpload
Process-level HTTP POST settings for status / link / route uploads.
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
Process-level HTTP POST settings for status report uploads.
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 lossPercentage
[Optional, Default: 0] Percentage of packets to drop (0-100).
int jitterMs
[Optional, Default: 0] Max random delay in milliseconds applied to a packet.
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.