20#ifndef ConfigurationObjects_h
21#define ConfigurationObjects_h
24#include "EngageConstants.h"
33#include <nlohmann/json.hpp>
36 #pragma GCC diagnostic push
37 #pragma GCC diagnostic ignored "-Wunused-function"
40#if !defined(ENGAGE_IGNORE_COMPILER_UNUSED_WARNING)
42 #define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING __attribute__((unused))
44 #define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING
50#if defined(RTS_CORE_BUILD)
51namespace ConfigurationObjects
53namespace AppConfigurationObjects
56 static const char *ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT =
"_attached";
150 } DataSeriesValueType_t;
164 bloodOxygenation = 5,
166 taskEffectiveness = 7
167 } HumanBiometricsTypes_t;
171 static FILE *_internalFileOpener(
const char *fn,
const char *mode)
176 fp = fopen(fn, mode);
178 if(fopen_s(&fp, fn, mode) != 0)
187 #define JSON_SERIALIZED_CLASS(_cn) \
189 static void to_json(nlohmann::json& j, const _cn& p); \
190 static void from_json(const nlohmann::json& j, _cn& p);
192 #define IMPLEMENT_JSON_DOCUMENTATION(_cn) \
194 static void document(const char *path = nullptr) \
197 example.initForDocumenting(); \
198 std::string theJson = example.serialize(3); \
199 std::cout << "------------------------------------------------" << std::endl \
200 << #_cn << std::endl \
201 << theJson << std::endl \
202 << "------------------------------------------------" << std::endl; \
204 if(path != nullptr && path[0] != 0) \
206 std::string fn = path; \
209 fn.append(".json"); \
211 FILE *fp = _internalFileOpener(fn.c_str(), "wt");\
215 fputs(theJson.c_str(), fp); \
220 std::cout << "ERROR: Cannot write to " << fn << std::endl; \
224 static const char *className() \
229 #define IMPLEMENT_JSON_SERIALIZATION() \
231 bool deserialize(const char *s) \
235 if(s != nullptr && s[0] != 0) \
237 from_json(nlohmann::json::parse(s), *this); \
251 std::string serialize(const int indent = -1) \
257 return j.dump(indent); \
261 return std::string("{}"); \
265 #define IMPLEMENT_WRAPPED_JSON_SERIALIZATION(_cn) \
267 std::string serializeWrapped(const int indent = -1) \
276 firstChar[0] = #_cn[0]; \
278 firstChar[0] = tolower(firstChar[0]); \
280 rc.append(firstChar); \
281 rc.append((#_cn) + 1); \
283 rc.append(j.dump(indent)); \
290 return std::string("{}"); \
294 #define TOJSON_IMPL(__var) \
297 #define FROMJSON_IMPL_SIMPLE(__var) \
298 getOptional(#__var, p.__var, j)
300 #define FROMJSON_IMPL(__var, __type, __default) \
301 getOptional<__type>(#__var, p.__var, j, __default)
303 #define TOJSON_BASE_IMPL() \
304 to_json(j, (ConfigurationObjectBase&)p)
306 #define FROMJSON_BASE_IMPL() \
307 from_json(j, (ConfigurationObjectBase&)p);
311 static std::string EMPTY_STRING;
314 static void getOptional(
const char *name, T& v,
const nlohmann::json& j, T def)
320 j.at(name).get_to(v);
334 static void getOptional(
const char *name, T& v,
const nlohmann::json& j)
340 j.at(name).get_to(v);
349 static void getOptionalWithIndicator(
const char *name, T& v,
const nlohmann::json& j, T def,
bool *wasFound)
355 j.at(name).get_to(v);
372 static void getOptionalWithIndicator(
const char *name, T& v,
const nlohmann::json& j,
bool *wasFound)
378 j.at(name).get_to(v);
397 _documenting =
false;
404 virtual void initForDocumenting()
409 virtual std::string toString()
411 return std::string(
"");
414 inline virtual bool isDocumenting()
const
419 nlohmann::json _attached;
429 if(p._attached !=
nullptr)
431 j[ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT] = p._attached;
438 static void from_json(
const nlohmann::json& j, ConfigurationObjectBase& p)
442 if(j.contains(ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT))
444 p._attached = j.at(ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT);
453 JSON_SERIALIZED_CLASS(KvPair)
462 IMPLEMENT_JSON_SERIALIZATION()
463 IMPLEMENT_JSON_DOCUMENTATION(
KvPair)
484 static void to_json(nlohmann::json& j,
const KvPair& p)
491 static void from_json(
const nlohmann::json& j, KvPair& p)
494 getOptional<std::string>(
"key", p.key, j, EMPTY_STRING);
495 getOptional<std::string>(
"tags", p.value, j, EMPTY_STRING);
499 JSON_SERIALIZED_CLASS(TuningSettings)
502 IMPLEMENT_JSON_SERIALIZATION()
546 maxPooledRtpObjects = 0;
547 maxActiveRtpObjects = 0;
550 maxPooledBlobObjects = 0;
551 maxActiveBlobObjects = 0;
553 maxPooledBufferMb = 0;
554 maxPooledBufferObjects = 0;
555 maxActiveBufferObjects = 0;
557 maxActiveRtpProcessors = 0;
560 virtual void initForDocumenting()
566 static void to_json(nlohmann::json& j,
const TuningSettings& p)
569 TOJSON_IMPL(maxPooledRtpMb),
570 TOJSON_IMPL(maxPooledRtpObjects),
571 TOJSON_IMPL(maxActiveRtpObjects),
573 TOJSON_IMPL(maxPooledBlobMb),
574 TOJSON_IMPL(maxPooledBlobObjects),
575 TOJSON_IMPL(maxActiveBlobObjects),
577 TOJSON_IMPL(maxPooledBufferMb),
578 TOJSON_IMPL(maxPooledBufferObjects),
579 TOJSON_IMPL(maxActiveBufferObjects),
581 TOJSON_IMPL(maxActiveRtpProcessors)
584 static void from_json(
const nlohmann::json& j, TuningSettings& p)
587 FROMJSON_IMPL(maxPooledRtpMb, uint32_t, 0);
588 FROMJSON_IMPL(maxPooledRtpObjects, uint32_t, 0);
589 FROMJSON_IMPL(maxActiveRtpObjects, uint32_t, 0);
591 FROMJSON_IMPL(maxPooledBlobMb, uint32_t, 0);
592 FROMJSON_IMPL(maxPooledBlobObjects, uint32_t, 0);
593 FROMJSON_IMPL(maxActiveBlobObjects, uint32_t, 0);
595 FROMJSON_IMPL(maxPooledBufferMb, uint32_t, 0);
596 FROMJSON_IMPL(maxPooledBufferObjects, uint32_t, 0);
597 FROMJSON_IMPL(maxActiveBufferObjects, uint32_t, 0);
599 FROMJSON_IMPL(maxActiveRtpProcessors, uint32_t, 0);
604 JSON_SERIALIZED_CLASS(FipsCryptoSettings)
607 IMPLEMENT_JSON_SERIALIZATION()
640 virtual void initForDocumenting()
646 static void to_json(nlohmann::json& j,
const FipsCryptoSettings& p)
649 TOJSON_IMPL(enabled),
656 static void from_json(
const nlohmann::json& j, FipsCryptoSettings& p)
659 FROMJSON_IMPL_SIMPLE(enabled);
660 FROMJSON_IMPL_SIMPLE(path);
661 FROMJSON_IMPL_SIMPLE(debug);
662 FROMJSON_IMPL_SIMPLE(curves);
663 FROMJSON_IMPL_SIMPLE(ciphers);
668 JSON_SERIALIZED_CLASS(WatchdogSettings)
671 IMPLEMENT_JSON_SERIALIZATION()
699 hangDetectionMs = 2000;
701 slowExecutionThresholdMs = 100;
704 virtual void initForDocumenting()
710 static void to_json(nlohmann::json& j,
const WatchdogSettings& p)
713 TOJSON_IMPL(enabled),
714 TOJSON_IMPL(intervalMs),
715 TOJSON_IMPL(hangDetectionMs),
716 TOJSON_IMPL(abortOnHang),
717 TOJSON_IMPL(slowExecutionThresholdMs)
720 static void from_json(
const nlohmann::json& j, WatchdogSettings& p)
723 getOptional<bool>(
"enabled", p.enabled, j,
true);
724 getOptional<int>(
"intervalMs", p.intervalMs, j, 5000);
725 getOptional<int>(
"hangDetectionMs", p.hangDetectionMs, j, 2000);
726 getOptional<bool>(
"abortOnHang", p.abortOnHang, j,
true);
727 getOptional<int>(
"slowExecutionThresholdMs", p.slowExecutionThresholdMs, j, 100);
732 JSON_SERIALIZED_CLASS(FileRecordingRequest)
735 IMPLEMENT_JSON_SERIALIZATION()
740 std::string fileName;
755 virtual void initForDocumenting()
758 id =
"1-2-3-4-5-6-7-8-9";
759 fileName =
"/tmp/test.wav";
768 TOJSON_IMPL(fileName),
772 static void from_json(
const nlohmann::json& j, FileRecordingRequest& p)
775 j.at(
"id").get_to(p.id);
776 j.at(
"fileName").get_to(p.fileName);
777 getOptional<uint32_t>(
"maxMs", p.maxMs, j, 60000);
782 JSON_SERIALIZED_CLASS(Feature)
785 IMPLEMENT_JSON_SERIALIZATION()
786 IMPLEMENT_JSON_DOCUMENTATION(
Feature)
791 std::string description;
792 std::string comments;
811 virtual void initForDocumenting()
814 id =
"{af9540d1-3e86-4fa6-8b80-e26daecb61ab}";
815 name =
"A sample feature";
816 description =
"This is an example of a feature";
817 comments =
"These are comments for this feature";
823 static void to_json(nlohmann::json& j,
const Feature& p)
828 TOJSON_IMPL(description),
829 TOJSON_IMPL(comments),
834 static void from_json(
const nlohmann::json& j, Feature& p)
837 j.at(
"id").get_to(p.id);
838 getOptional(
"name", p.name, j);
839 getOptional(
"description", p.description, j);
840 getOptional(
"comments", p.comments, j);
841 getOptional(
"count", p.count, j, 0);
849 JSON_SERIALIZED_CLASS(Featureset)
852 IMPLEMENT_JSON_SERIALIZATION()
856 std::string signature;
858 std::vector<Feature> features;
868 lockToDeviceId =
false;
872 virtual void initForDocumenting()
875 signature =
"c39df3f36c6444e686e47e70fc45cf91e6ed2d8de62d4a1e89f507d567ff48aaabb1a70e54b44377b46fc4a1a2e319e5b77e4abffc444db98f8eb55d709aad5f";
876 lockToDeviceId =
false;
880 static void to_json(nlohmann::json& j,
const Featureset& p)
883 TOJSON_IMPL(signature),
884 TOJSON_IMPL(lockToDeviceId),
885 TOJSON_IMPL(features)
888 static void from_json(
const nlohmann::json& j, Featureset& p)
891 getOptional(
"signature", p.signature, j);
892 getOptional<bool>(
"lockToDeviceId", p.lockToDeviceId, j,
false);
893 getOptional<std::vector<Feature>>(
"features", p.features, j);
898 JSON_SERIALIZED_CLASS(Agc)
909 IMPLEMENT_JSON_SERIALIZATION()
910 IMPLEMENT_JSON_DOCUMENTATION(
Agc)
941 compressionGainDb = 25;
942 enableLimiter =
false;
947 static void to_json(nlohmann::json& j,
const Agc& p)
950 TOJSON_IMPL(enabled),
951 TOJSON_IMPL(minLevel),
952 TOJSON_IMPL(maxLevel),
953 TOJSON_IMPL(compressionGainDb),
954 TOJSON_IMPL(enableLimiter),
955 TOJSON_IMPL(targetLevelDb)
958 static void from_json(
const nlohmann::json& j, Agc& p)
961 getOptional<bool>(
"enabled", p.enabled, j,
false);
962 getOptional<int>(
"minLevel", p.minLevel, j, 0);
963 getOptional<int>(
"maxLevel", p.maxLevel, j, 255);
964 getOptional<int>(
"compressionGainDb", p.compressionGainDb, j, 25);
965 getOptional<bool>(
"enableLimiter", p.enableLimiter, j,
false);
966 getOptional<int>(
"targetLevelDb", p.targetLevelDb, j, 3);
971 JSON_SERIALIZED_CLASS(RtpPayloadTypeTranslation)
982 IMPLEMENT_JSON_SERIALIZATION()
1003 bool matches(
const RtpPayloadTypeTranslation& other)
1005 return ( (external == other.external) && (engage == other.engage) );
1009 static void to_json(nlohmann::json& j,
const RtpPayloadTypeTranslation& p)
1012 TOJSON_IMPL(external),
1016 static void from_json(
const nlohmann::json& j, RtpPayloadTypeTranslation& p)
1019 getOptional<uint16_t>(
"external", p.external, j);
1020 getOptional<uint16_t>(
"engage", p.engage, j);
1024 JSON_SERIALIZED_CLASS(NetworkInterfaceDevice)
1027 IMPLEMENT_JSON_SERIALIZATION()
1032 std::string friendlyName;
1033 std::string description;
1035 std::string address;
1038 bool supportsMulticast;
1039 std::string hardwareAddress;
1049 friendlyName.clear();
1050 description.clear();
1055 supportsMulticast =
false;
1056 hardwareAddress.clear();
1059 virtual void initForDocumenting()
1063 friendlyName =
"Wi-Fi";
1064 description =
"A wi-fi adapter";
1066 address =
"127.0.0.1";
1069 supportsMulticast =
false;
1070 hardwareAddress =
"DE:AD:BE:EF:01:02:03";
1078 TOJSON_IMPL(friendlyName),
1079 TOJSON_IMPL(description),
1080 TOJSON_IMPL(family),
1081 TOJSON_IMPL(address),
1082 TOJSON_IMPL(available),
1083 TOJSON_IMPL(isLoopback),
1084 TOJSON_IMPL(supportsMulticast),
1085 TOJSON_IMPL(hardwareAddress)
1088 static void from_json(
const nlohmann::json& j, NetworkInterfaceDevice& p)
1091 getOptional(
"name", p.name, j);
1092 getOptional(
"friendlyName", p.friendlyName, j);
1093 getOptional(
"description", p.description, j);
1094 getOptional(
"family", p.family, j, -1);
1095 getOptional(
"address", p.address, j);
1096 getOptional(
"available", p.available, j,
false);
1097 getOptional(
"isLoopback", p.isLoopback, j,
false);
1098 getOptional(
"supportsMulticast", p.supportsMulticast, j,
false);
1099 getOptional(
"hardwareAddress", p.hardwareAddress, j);
1103 JSON_SERIALIZED_CLASS(ListOfNetworkInterfaceDevice)
1106 IMPLEMENT_JSON_SERIALIZATION()
1110 std::vector<NetworkInterfaceDevice> list;
1129 static void from_json(
const nlohmann::json& j, ListOfNetworkInterfaceDevice& p)
1132 getOptional<std::vector<NetworkInterfaceDevice>>(
"list", p.list, j);
1137 JSON_SERIALIZED_CLASS(RtpHeader)
1148 IMPLEMENT_JSON_SERIALIZATION()
1182 virtual void initForDocumenting()
1193 static void to_json(nlohmann::json& j,
const RtpHeader& p)
1199 TOJSON_IMPL(marker),
1206 static void from_json(
const nlohmann::json& j, RtpHeader& p)
1209 getOptional<int>(
"pt", p.pt, j, -1);
1210 getOptional<bool>(
"marker", p.marker, j,
false);
1211 getOptional<uint16_t>(
"seq", p.seq, j, 0);
1212 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
1213 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1217 JSON_SERIALIZED_CLASS(BlobInfo)
1228 IMPLEMENT_JSON_SERIALIZATION()
1229 IMPLEMENT_JSON_DOCUMENTATION(
BlobInfo)
1244 bptJsonTextUtf8 = 2,
1250 bptEngageBinaryHumanBiometrics = 4,
1253 bptAppMimeMessage = 5,
1256 bptEngageInternal = 42
1291 payloadType = PayloadType_t::bptUndefined;
1296 virtual void initForDocumenting()
1299 rtpHeader.initForDocumenting();
1303 static void to_json(nlohmann::json& j,
const BlobInfo& p)
1307 TOJSON_IMPL(source),
1308 TOJSON_IMPL(target),
1309 TOJSON_IMPL(rtpHeader),
1310 TOJSON_IMPL(payloadType),
1312 TOJSON_IMPL(txnTimeoutSecs)
1315 static void from_json(
const nlohmann::json& j, BlobInfo& p)
1318 getOptional<size_t>(
"size", p.size, j, 0);
1319 getOptional<std::string>(
"source", p.source, j, EMPTY_STRING);
1320 getOptional<std::string>(
"target", p.target, j, EMPTY_STRING);
1321 getOptional<RtpHeader>(
"rtpHeader", p.rtpHeader, j);
1322 getOptional<BlobInfo::PayloadType_t>(
"payloadType", p.payloadType, j, BlobInfo::PayloadType_t::bptUndefined);
1323 getOptional<std::string>(
"txnId", p.txnId, j, EMPTY_STRING);
1324 getOptional<int>(
"txnTimeoutSecs", p.txnTimeoutSecs, j, 0);
1329 JSON_SERIALIZED_CLASS(TxAudioUri)
1343 IMPLEMENT_JSON_SERIALIZATION()
1364 virtual void initForDocumenting()
1369 static void to_json(nlohmann::json& j,
const TxAudioUri& p)
1373 TOJSON_IMPL(repeatCount)
1376 static void from_json(
const nlohmann::json& j, TxAudioUri& p)
1379 getOptional<std::string>(
"uri", p.uri, j, EMPTY_STRING);
1380 getOptional<int>(
"repeatCount", p.repeatCount, j, 0);
1385 JSON_SERIALIZED_CLASS(AdvancedTxParams)
1399 IMPLEMENT_JSON_SERIALIZATION()
1447 includeNodeId =
false;
1452 aliasSpecializer = 0;
1453 receiverRxMuteForAliasSpecializer =
false;
1457 virtual void initForDocumenting()
1462 static void to_json(nlohmann::json& j,
const AdvancedTxParams& p)
1466 TOJSON_IMPL(priority),
1467 TOJSON_IMPL(subchannelTag),
1468 TOJSON_IMPL(includeNodeId),
1472 TOJSON_IMPL(audioUri),
1473 TOJSON_IMPL(aliasSpecializer),
1474 TOJSON_IMPL(receiverRxMuteForAliasSpecializer),
1475 TOJSON_IMPL(reBegin)
1478 static void from_json(
const nlohmann::json& j, AdvancedTxParams& p)
1481 getOptional<uint16_t>(
"flags", p.flags, j, 0);
1482 getOptional<uint8_t>(
"priority", p.priority, j, 0);
1483 getOptional<uint16_t>(
"subchannelTag", p.subchannelTag, j, 0);
1484 getOptional<bool>(
"includeNodeId", p.includeNodeId, j,
false);
1485 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
1486 getOptional<bool>(
"muted", p.muted, j,
false);
1487 getOptional<uint32_t>(
"txId", p.txId, j, 0);
1488 getOptional<TxAudioUri>(
"audioUri", p.audioUri, j);
1489 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
1490 getOptional<bool>(
"receiverRxMuteForAliasSpecializer", p.receiverRxMuteForAliasSpecializer, j,
false);
1491 getOptional<bool>(
"reBegin", p.reBegin, j,
false);
1495 JSON_SERIALIZED_CLASS(Identity)
1509 IMPLEMENT_JSON_SERIALIZATION()
1510 IMPLEMENT_JSON_DOCUMENTATION(
Identity)
1540 displayName.clear();
1544 virtual void initForDocumenting()
1549 static void to_json(nlohmann::json& j,
const Identity& p)
1552 TOJSON_IMPL(nodeId),
1553 TOJSON_IMPL(userId),
1554 TOJSON_IMPL(displayName),
1558 static void from_json(
const nlohmann::json& j, Identity& p)
1561 getOptional<std::string>(
"nodeId", p.nodeId, j);
1562 getOptional<std::string>(
"userId", p.userId, j);
1563 getOptional<std::string>(
"displayName", p.displayName, j);
1564 getOptional<std::string>(
"avatar", p.avatar, j);
1569 JSON_SERIALIZED_CLASS(Location)
1583 IMPLEMENT_JSON_SERIALIZATION()
1584 IMPLEMENT_JSON_DOCUMENTATION(
Location)
1587 constexpr static double INVALID_LOCATION_VALUE = -999.999;
1615 latitude = INVALID_LOCATION_VALUE;
1616 longitude = INVALID_LOCATION_VALUE;
1617 altitude = INVALID_LOCATION_VALUE;
1618 direction = INVALID_LOCATION_VALUE;
1619 speed = INVALID_LOCATION_VALUE;
1622 virtual void initForDocumenting()
1628 longitude = 456.789;
1635 static void to_json(nlohmann::json& j,
const Location& p)
1637 if(p.latitude != Location::INVALID_LOCATION_VALUE && p.longitude != Location::INVALID_LOCATION_VALUE)
1640 TOJSON_IMPL(latitude),
1641 TOJSON_IMPL(longitude),
1644 if(p.ts != 0) j[
"ts"] = p.ts;
1645 if(p.altitude != Location::INVALID_LOCATION_VALUE) j[
"altitude"] = p.altitude;
1646 if(p.speed != Location::INVALID_LOCATION_VALUE) j[
"speed"] = p.speed;
1647 if(p.direction != Location::INVALID_LOCATION_VALUE) j[
"direction"] = p.direction;
1650 static void from_json(
const nlohmann::json& j, Location& p)
1653 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1654 j.at(
"latitude").get_to(p.latitude);
1655 j.at(
"longitude").get_to(p.longitude);
1656 getOptional<double>(
"altitude", p.altitude, j, Location::INVALID_LOCATION_VALUE);
1657 getOptional<double>(
"direction", p.direction, j, Location::INVALID_LOCATION_VALUE);
1658 getOptional<double>(
"speed", p.speed, j, Location::INVALID_LOCATION_VALUE);
1662 JSON_SERIALIZED_CLASS(Power)
1674 IMPLEMENT_JSON_SERIALIZATION()
1675 IMPLEMENT_JSON_DOCUMENTATION(
Power)
1721 virtual void initForDocumenting()
1726 static void to_json(nlohmann::json& j,
const Power& p)
1728 if(p.source != 0 && p.state != 0 && p.level != 0)
1731 TOJSON_IMPL(source),
1737 static void from_json(
const nlohmann::json& j, Power& p)
1740 getOptional<int>(
"source", p.source, j, 0);
1741 getOptional<int>(
"state", p.state, j, 0);
1742 getOptional<int>(
"level", p.level, j, 0);
1747 JSON_SERIALIZED_CLASS(Connectivity)
1759 IMPLEMENT_JSON_SERIALIZATION()
1796 virtual void initForDocumenting()
1806 static void to_json(nlohmann::json& j,
const Connectivity& p)
1812 TOJSON_IMPL(strength),
1817 static void from_json(
const nlohmann::json& j, Connectivity& p)
1820 getOptional<int>(
"type", p.type, j, 0);
1821 getOptional<int>(
"strength", p.strength, j, 0);
1822 getOptional<int>(
"rating", p.rating, j, 0);
1827 JSON_SERIALIZED_CLASS(PresenceDescriptorGroupItem)
1839 IMPLEMENT_JSON_SERIALIZATION()
1864 virtual void initForDocumenting()
1866 groupId =
"{123-456}";
1872 static void to_json(nlohmann::json& j,
const PresenceDescriptorGroupItem& p)
1875 TOJSON_IMPL(groupId),
1880 static void from_json(
const nlohmann::json& j, PresenceDescriptorGroupItem& p)
1883 getOptional<std::string>(
"groupId", p.groupId, j);
1884 getOptional<std::string>(
"alias", p.alias, j);
1885 getOptional<uint16_t>(
"status", p.status, j);
1890 JSON_SERIALIZED_CLASS(PresenceDescriptor)
1902 IMPLEMENT_JSON_SERIALIZATION()
1980 groupAliases.clear();
1983 announceOnReceive =
false;
1984 connectivity.clear();
1988 virtual void initForDocumenting()
1995 identity.initForDocumenting();
1996 comment =
"This is a comment";
1999 PresenceDescriptorGroupItem gi;
2000 gi.initForDocumenting();
2001 groupAliases.push_back(gi);
2003 location.initForDocumenting();
2005 announceOnReceive =
true;
2006 connectivity.initForDocumenting();
2007 power.initForDocumenting();
2011 static void to_json(nlohmann::json& j,
const PresenceDescriptor& p)
2015 TOJSON_IMPL(nextUpdate),
2016 TOJSON_IMPL(identity),
2017 TOJSON_IMPL(comment),
2018 TOJSON_IMPL(disposition),
2019 TOJSON_IMPL(groupAliases),
2020 TOJSON_IMPL(location),
2021 TOJSON_IMPL(custom),
2022 TOJSON_IMPL(announceOnReceive),
2023 TOJSON_IMPL(connectivity),
2027 if(!p.comment.empty()) j[
"comment"] = p.comment;
2028 if(!p.custom.empty()) j[
"custom"] = p.custom;
2035 static void from_json(
const nlohmann::json& j, PresenceDescriptor& p)
2038 getOptional<bool>(
"self", p.self, j);
2039 getOptional<uint32_t>(
"ts", p.ts, j);
2040 getOptional<uint32_t>(
"nextUpdate", p.nextUpdate, j);
2041 getOptional<Identity>(
"identity", p.identity, j);
2042 getOptional<std::string>(
"comment", p.comment, j);
2043 getOptional<uint32_t>(
"disposition", p.disposition, j);
2044 getOptional<std::vector<PresenceDescriptorGroupItem>>(
"groupAliases", p.groupAliases, j);
2045 getOptional<Location>(
"location", p.location, j);
2046 getOptional<std::string>(
"custom", p.custom, j);
2047 getOptional<bool>(
"announceOnReceive", p.announceOnReceive, j);
2048 getOptional<Connectivity>(
"connectivity", p.connectivity, j);
2049 getOptional<Power>(
"power", p.power, j);
2090 } AddressResolutionPolicy_t;
2093 JSON_SERIALIZED_CLASS(NetworkTxOptions)
2107 IMPLEMENT_JSON_SERIALIZATION()
2132 virtual void initForDocumenting()
2137 static void to_json(nlohmann::json& j,
const NetworkTxOptions& p)
2140 TOJSON_IMPL(priority),
2144 static void from_json(
const nlohmann::json& j, NetworkTxOptions& p)
2147 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2148 getOptional<int>(
"ttl", p.ttl, j, 1);
2153 JSON_SERIALIZED_CLASS(TcpNetworkTxOptions)
2163 IMPLEMENT_JSON_SERIALIZATION()
2178 virtual void initForDocumenting()
2186 TOJSON_IMPL(priority),
2190 static void from_json(
const nlohmann::json& j, TcpNetworkTxOptions& p)
2193 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2194 getOptional<int>(
"ttl", p.ttl, j, -1);
2210 JSON_SERIALIZED_CLASS(NetworkAddress)
2223 IMPLEMENT_JSON_SERIALIZATION()
2244 bool matches(
const NetworkAddress& other)
2246 if(address.compare(other.address) != 0)
2251 if(port != other.port)
2260 static void to_json(nlohmann::json& j,
const NetworkAddress& p)
2263 TOJSON_IMPL(address),
2267 static void from_json(
const nlohmann::json& j, NetworkAddress& p)
2270 getOptional<std::string>(
"address", p.address, j);
2271 getOptional<int>(
"port", p.port, j);
2276 JSON_SERIALIZED_CLASS(NetworkAddressRxTx)
2289 IMPLEMENT_JSON_SERIALIZATION()
2311 static void to_json(nlohmann::json& j,
const NetworkAddressRxTx& p)
2318 static void from_json(
const nlohmann::json& j, NetworkAddressRxTx& p)
2321 getOptional<NetworkAddress>(
"rx", p.rx, j);
2322 getOptional<NetworkAddress>(
"tx", p.tx, j);
2333 } GroupRestrictionAccessPolicyType_t;
2335 static bool isValidGroupRestrictionAccessPolicyType(GroupRestrictionAccessPolicyType_t t)
2337 return (t == GroupRestrictionAccessPolicyType_t::graptPermissive ||
2338 t == GroupRestrictionAccessPolicyType_t::graptStrict );
2352 } RestrictionType_t;
2354 static bool isValidRestrictionType(RestrictionType_t t)
2356 return (t == RestrictionType_t::rtUndefined ||
2357 t == RestrictionType_t::rtWhitelist ||
2358 t == RestrictionType_t::rtBlacklist );
2384 } RestrictionElementType_t;
2386 static bool isValidRestrictionElementType(RestrictionElementType_t t)
2388 return (t == RestrictionElementType_t::retGroupId ||
2389 t == RestrictionElementType_t::retGroupIdPattern ||
2390 t == RestrictionElementType_t::retGenericAccessTagPattern ||
2391 t == RestrictionElementType_t::retCertificateSerialNumberPattern ||
2392 t == RestrictionElementType_t::retCertificateFingerprintPattern ||
2393 t == RestrictionElementType_t::retCertificateSubjectPattern ||
2394 t == RestrictionElementType_t::retCertificateIssuerPattern);
2399 JSON_SERIALIZED_CLASS(NetworkAddressRestrictionList)
2412 IMPLEMENT_JSON_SERIALIZATION()
2429 type = RestrictionType_t::rtUndefined;
2434 static void to_json(nlohmann::json& j,
const NetworkAddressRestrictionList& p)
2438 TOJSON_IMPL(elements)
2441 static void from_json(
const nlohmann::json& j, NetworkAddressRestrictionList& p)
2444 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2445 getOptional<std::vector<NetworkAddressRxTx>>(
"elements", p.elements, j);
2449 JSON_SERIALIZED_CLASS(StringRestrictionList)
2462 IMPLEMENT_JSON_SERIALIZATION()
2477 type = RestrictionType_t::rtUndefined;
2478 elementsType = RestrictionElementType_t::retGroupId;
2488 static void to_json(nlohmann::json& j,
const StringRestrictionList& p)
2492 TOJSON_IMPL(elementsType),
2493 TOJSON_IMPL(elements)
2496 static void from_json(
const nlohmann::json& j, StringRestrictionList& p)
2499 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2500 getOptional<RestrictionElementType_t>(
"elementsType", p.elementsType, j, RestrictionElementType_t::retGroupId);
2501 getOptional<std::vector<std::string>>(
"elements", p.elements, j);
2506 JSON_SERIALIZED_CLASS(PacketCapturer)
2517 IMPLEMENT_JSON_SERIALIZATION()
2523 std::string filePrefix;
2541 TOJSON_IMPL(enabled),
2543 TOJSON_IMPL(filePrefix)
2546 static void from_json(
const nlohmann::json& j, PacketCapturer& p)
2549 getOptional<bool>(
"enabled", p.enabled, j,
false);
2550 getOptional<uint32_t>(
"maxMb", p.maxMb, j, 10);
2551 getOptional<std::string>(
"filePrefix", p.filePrefix, j, EMPTY_STRING);
2556 JSON_SERIALIZED_CLASS(TransportImpairment)
2567 IMPLEMENT_JSON_SERIALIZATION()
2571 int applicationPercentage;
2582 applicationPercentage = 0;
2591 TOJSON_IMPL(applicationPercentage),
2592 TOJSON_IMPL(jitterMs),
2593 TOJSON_IMPL(lossPercentage)
2596 static void from_json(
const nlohmann::json& j, TransportImpairment& p)
2599 getOptional<int>(
"applicationPercentage", p.applicationPercentage, j, 0);
2600 getOptional<int>(
"jitterMs", p.jitterMs, j, 0);
2601 getOptional<int>(
"lossPercentage", p.lossPercentage, j, 0);
2605 JSON_SERIALIZED_CLASS(NsmNetworking)
2616 IMPLEMENT_JSON_SERIALIZATION()
2620 std::string interfaceName;
2627 std::string cryptoPassword;
2636 interfaceName.clear();
2641 rxImpairment.clear();
2642 txImpairment.clear();
2643 cryptoPassword.clear();
2647 static void to_json(nlohmann::json& j,
const NsmNetworking& p)
2650 TOJSON_IMPL(interfaceName),
2651 TOJSON_IMPL(address),
2654 TOJSON_IMPL(txOversend),
2655 TOJSON_IMPL(rxImpairment),
2656 TOJSON_IMPL(txImpairment),
2657 TOJSON_IMPL(cryptoPassword)
2660 static void from_json(
const nlohmann::json& j, NsmNetworking& p)
2663 getOptional(
"interfaceName", p.interfaceName, j, EMPTY_STRING);
2664 getOptional<NetworkAddress>(
"address", p.address, j);
2665 getOptional<int>(
"ttl", p.ttl, j, 1);
2666 getOptional<int>(
"tos", p.tos, j, 56);
2667 getOptional<int>(
"txOversend", p.txOversend, j, 0);
2668 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
2669 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
2670 getOptional(
"cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
2675 JSON_SERIALIZED_CLASS(NsmConfiguration)
2686 IMPLEMENT_JSON_SERIALIZATION()
2694 std::vector<std::string> resources;
2698 int transitionSecsFactor;
2708 favorUptime =
false;
2711 tokenStart = 1000000;
2714 transitionSecsFactor = 3;
2722 TOJSON_IMPL(favorUptime),
2723 TOJSON_IMPL(networking),
2724 TOJSON_IMPL(resources),
2725 TOJSON_IMPL(tokenStart),
2726 TOJSON_IMPL(tokenEnd),
2727 TOJSON_IMPL(intervalSecs),
2728 TOJSON_IMPL(transitionSecsFactor)
2731 static void from_json(
const nlohmann::json& j, NsmConfiguration& p)
2734 getOptional(
"id", p.id, j);
2735 getOptional<bool>(
"favorUptime", p.favorUptime, j,
false);
2736 getOptional<NsmNetworking>(
"networking", p.networking, j);
2737 getOptional<std::vector<std::string>>(
"resources", p.resources, j);
2738 getOptional<int>(
"tokenStart", p.tokenStart, j, 1000000);
2739 getOptional<int>(
"tokenEnd", p.tokenEnd, j, 2000000);
2740 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
2741 getOptional<int>(
"transitionSecsFactor", p.transitionSecsFactor, j, 3);
2746 JSON_SERIALIZED_CLASS(Rallypoint)
2756 IMPLEMENT_JSON_SERIALIZATION()
2865 certificate.clear();
2866 certificateKey.clear();
2867 caCertificates.clear();
2869 transactionTimeoutMs = 0;
2870 disableMessageSigning =
false;
2871 connectionTimeoutSecs = 0;
2872 tcpTxOptions.clear();
2874 protocol = rppTlsTcp;
2876 additionalProtocols.clear();
2879 bool matches(
const Rallypoint& other)
2881 if(!host.matches(other.host))
2886 if(protocol != other.protocol)
2891 if(path.compare(other.path) != 0)
2896 if(certificate.compare(other.certificate) != 0)
2901 if(certificateKey.compare(other.certificateKey) != 0)
2906 if(verifyPeer != other.verifyPeer)
2911 if(allowSelfSignedCertificate != other.allowSelfSignedCertificate)
2916 if(caCertificates.size() != other.caCertificates.size())
2921 for(
size_t x = 0; x < caCertificates.size(); x++)
2925 for(
size_t y = 0; y < other.caCertificates.size(); y++)
2927 if(caCertificates[x].compare(other.caCertificates[y]) == 0)
2940 if(transactionTimeoutMs != other.transactionTimeoutMs)
2945 if(disableMessageSigning != other.disableMessageSigning)
2949 if(connectionTimeoutSecs != other.connectionTimeoutSecs)
2953 if(tcpTxOptions.
priority != other.tcpTxOptions.priority)
2957 if(sni.compare(other.sni) != 0)
2966 static void to_json(nlohmann::json& j,
const Rallypoint& p)
2970 TOJSON_IMPL(certificate),
2971 TOJSON_IMPL(certificateKey),
2972 TOJSON_IMPL(verifyPeer),
2973 TOJSON_IMPL(allowSelfSignedCertificate),
2974 TOJSON_IMPL(caCertificates),
2975 TOJSON_IMPL(transactionTimeoutMs),
2976 TOJSON_IMPL(disableMessageSigning),
2977 TOJSON_IMPL(connectionTimeoutSecs),
2978 TOJSON_IMPL(tcpTxOptions),
2980 TOJSON_IMPL(protocol),
2982 TOJSON_IMPL(additionalProtocols)
2986 static void from_json(
const nlohmann::json& j, Rallypoint& p)
2989 j.at(
"host").get_to(p.host);
2990 getOptional(
"certificate", p.certificate, j);
2991 getOptional(
"certificateKey", p.certificateKey, j);
2992 getOptional<bool>(
"verifyPeer", p.verifyPeer, j,
true);
2993 getOptional<bool>(
"allowSelfSignedCertificate", p.allowSelfSignedCertificate, j,
false);
2994 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
2995 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 0);
2996 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
2997 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
2998 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
2999 getOptional<std::string>(
"sni", p.sni, j);
3000 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
3001 getOptional<std::string>(
"path", p.path, j);
3002 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
3006 JSON_SERIALIZED_CLASS(RallypointCluster)
3019 IMPLEMENT_JSON_SERIALIZATION()
3035 } ConnectionStrategy_t;
3059 connectionStrategy = csRoundRobin;
3060 rallypoints.clear();
3062 connectionTimeoutSecs = 5;
3063 transactionTimeoutMs = 10000;
3067 static void to_json(nlohmann::json& j,
const RallypointCluster& p)
3070 TOJSON_IMPL(connectionStrategy),
3071 TOJSON_IMPL(rallypoints),
3072 TOJSON_IMPL(rolloverSecs),
3073 TOJSON_IMPL(connectionTimeoutSecs),
3074 TOJSON_IMPL(transactionTimeoutMs)
3077 static void from_json(
const nlohmann::json& j, RallypointCluster& p)
3080 getOptional<RallypointCluster::ConnectionStrategy_t>(
"connectionStrategy", p.connectionStrategy, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
3081 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
3082 getOptional<int>(
"rolloverSecs", p.rolloverSecs, j, 10);
3083 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
3084 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 10000);
3089 JSON_SERIALIZED_CLASS(NetworkDeviceDescriptor)
3101 IMPLEMENT_JSON_SERIALIZATION()
3142 manufacturer.clear();
3145 serialNumber.clear();
3150 virtual std::string toString()
3154 snprintf(buff,
sizeof(buff),
"deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
3157 manufacturer.c_str(),
3160 serialNumber.c_str(),
3164 return std::string(buff);
3168 static void to_json(nlohmann::json& j,
const NetworkDeviceDescriptor& p)
3171 TOJSON_IMPL(deviceId),
3173 TOJSON_IMPL(manufacturer),
3175 TOJSON_IMPL(hardwareId),
3176 TOJSON_IMPL(serialNumber),
3181 static void from_json(
const nlohmann::json& j, NetworkDeviceDescriptor& p)
3184 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3185 getOptional(
"name", p.name, j);
3186 getOptional(
"manufacturer", p.manufacturer, j);
3187 getOptional(
"model", p.model, j);
3188 getOptional(
"hardwareId", p.hardwareId, j);
3189 getOptional(
"serialNumber", p.serialNumber, j);
3190 getOptional(
"type", p.type, j);
3191 getOptional(
"extra", p.extra, j);
3195 JSON_SERIALIZED_CLASS(AudioGate)
3206 IMPLEMENT_JSON_SERIALIZATION()
3245 static void to_json(nlohmann::json& j,
const AudioGate& p)
3248 TOJSON_IMPL(enabled),
3249 TOJSON_IMPL(useVad),
3250 TOJSON_IMPL(hangMs),
3251 TOJSON_IMPL(windowMin),
3252 TOJSON_IMPL(windowMax),
3253 TOJSON_IMPL(coefficient)
3256 static void from_json(
const nlohmann::json& j, AudioGate& p)
3259 getOptional<bool>(
"enabled", p.enabled, j,
false);
3260 getOptional<bool>(
"useVad", p.useVad, j,
false);
3261 getOptional<uint32_t>(
"hangMs", p.hangMs, j, 1500);
3262 getOptional<uint32_t>(
"windowMin", p.windowMin, j, 25);
3263 getOptional<uint32_t>(
"windowMax", p.windowMax, j, 125);
3264 getOptional<double>(
"coefficient", p.coefficient, j, 1.75);
3268 JSON_SERIALIZED_CLASS(TxAudio)
3283 IMPLEMENT_JSON_SERIALIZATION()
3284 IMPLEMENT_JSON_DOCUMENTATION(
TxAudio)
3524 encoder = TxAudio::TxCodec_t::ctUnknown;
3525 encoderName.clear();
3531 extensionSendInterval = 10;
3532 initialHeaderBurst = 5;
3533 trailingHeaderBurst = 5;
3534 startTxNotifications = 5;
3535 customRtpPayloadType = -1;
3537 resetRtpOnTx =
true;
3538 enableSmoothing =
true;
3540 smoothedHangTimeMs = 0;
3544 static void to_json(nlohmann::json& j,
const TxAudio& p)
3547 TOJSON_IMPL(enabled),
3548 TOJSON_IMPL(encoder),
3549 TOJSON_IMPL(encoderName),
3550 TOJSON_IMPL(framingMs),
3551 TOJSON_IMPL(blockCount),
3553 TOJSON_IMPL(noHdrExt),
3554 TOJSON_IMPL(maxTxSecs),
3555 TOJSON_IMPL(extensionSendInterval),
3556 TOJSON_IMPL(initialHeaderBurst),
3557 TOJSON_IMPL(trailingHeaderBurst),
3558 TOJSON_IMPL(startTxNotifications),
3559 TOJSON_IMPL(customRtpPayloadType),
3560 TOJSON_IMPL(resetRtpOnTx),
3561 TOJSON_IMPL(enableSmoothing),
3563 TOJSON_IMPL(smoothedHangTimeMs)
3568 static void from_json(
const nlohmann::json& j, TxAudio& p)
3571 getOptional<bool>(
"enabled", p.enabled, j,
true);
3572 getOptional<TxAudio::TxCodec_t>(
"encoder", p.encoder, j, TxAudio::TxCodec_t::ctOpus8000);
3573 getOptional<std::string>(
"encoderName", p.encoderName, j, EMPTY_STRING);
3574 getOptional(
"framingMs", p.framingMs, j, 60);
3575 getOptional(
"blockCount", p.blockCount, j, 0);
3576 getOptional(
"fdx", p.fdx, j,
false);
3577 getOptional(
"noHdrExt", p.noHdrExt, j,
false);
3578 getOptional(
"maxTxSecs", p.maxTxSecs, j, 0);
3579 getOptional(
"extensionSendInterval", p.extensionSendInterval, j, 10);
3580 getOptional(
"initialHeaderBurst", p.initialHeaderBurst, j, 5);
3581 getOptional(
"trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3582 getOptional(
"startTxNotifications", p.startTxNotifications, j, 5);
3583 getOptional(
"customRtpPayloadType", p.customRtpPayloadType, j, -1);
3584 getOptional(
"resetRtpOnTx", p.resetRtpOnTx, j,
true);
3585 getOptional(
"enableSmoothing", p.enableSmoothing, j,
true);
3586 getOptional(
"dtx", p.dtx, j,
false);
3587 getOptional(
"smoothedHangTimeMs", p.smoothedHangTimeMs, j, 0);
3593 JSON_SERIALIZED_CLASS(AudioRegistryDevice)
3605 IMPLEMENT_JSON_SERIALIZATION()
3644 manufacturer.clear();
3646 serialNumber.clear();
3651 virtual std::string toString()
3655 snprintf(buff,
sizeof(buff),
"hardwareId=%s, isDefault=%d, name=%s, manufacturer=%s, model=%s, serialNumber=%s, type=%s, extra=%s",
3659 manufacturer.c_str(),
3661 serialNumber.c_str(),
3665 return std::string(buff);
3669 static void to_json(nlohmann::json& j,
const AudioRegistryDevice& p)
3672 TOJSON_IMPL(hardwareId),
3673 TOJSON_IMPL(isDefault),
3675 TOJSON_IMPL(manufacturer),
3677 TOJSON_IMPL(serialNumber),
3682 static void from_json(
const nlohmann::json& j, AudioRegistryDevice& p)
3685 getOptional<std::string>(
"hardwareId", p.hardwareId, j, EMPTY_STRING);
3686 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
3687 getOptional(
"name", p.name, j);
3688 getOptional(
"manufacturer", p.manufacturer, j);
3689 getOptional(
"model", p.model, j);
3690 getOptional(
"serialNumber", p.serialNumber, j);
3691 getOptional(
"type", p.type, j);
3692 getOptional(
"extra", p.extra, j);
3697 JSON_SERIALIZED_CLASS(AudioRegistry)
3709 IMPLEMENT_JSON_SERIALIZATION()
3730 virtual std::string toString()
3732 return std::string(
"");
3736 static void to_json(nlohmann::json& j,
const AudioRegistry& p)
3739 TOJSON_IMPL(inputs),
3740 TOJSON_IMPL(outputs)
3743 static void from_json(
const nlohmann::json& j, AudioRegistry& p)
3746 getOptional<std::vector<AudioRegistryDevice>>(
"inputs", p.inputs, j);
3747 getOptional<std::vector<AudioRegistryDevice>>(
"outputs", p.outputs, j);
3751 JSON_SERIALIZED_CLASS(AudioDeviceDescriptor)
3763 IMPLEMENT_JSON_SERIALIZATION()
3857 direction = dirUnknown;
3858 boostPercentage = 0;
3863 manufacturer.clear();
3866 serialNumber.clear();
3872 virtual std::string toString()
3876 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",
3884 manufacturer.c_str(),
3887 serialNumber.c_str(),
3893 return std::string(buff);
3897 static void to_json(nlohmann::json& j,
const AudioDeviceDescriptor& p)
3900 TOJSON_IMPL(deviceId),
3901 TOJSON_IMPL(samplingRate),
3902 TOJSON_IMPL(channels),
3903 TOJSON_IMPL(direction),
3904 TOJSON_IMPL(boostPercentage),
3905 TOJSON_IMPL(isAdad),
3907 TOJSON_IMPL(manufacturer),
3909 TOJSON_IMPL(hardwareId),
3910 TOJSON_IMPL(serialNumber),
3911 TOJSON_IMPL(isDefault),
3914 TOJSON_IMPL(isPresent)
3917 static void from_json(
const nlohmann::json& j, AudioDeviceDescriptor& p)
3920 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3921 getOptional<int>(
"samplingRate", p.samplingRate, j, 0);
3922 getOptional<int>(
"channels", p.channels, j, 0);
3923 getOptional<AudioDeviceDescriptor::Direction_t>(
"direction", p.direction, j,
3924 AudioDeviceDescriptor::Direction_t::dirUnknown);
3925 getOptional<int>(
"boostPercentage", p.boostPercentage, j, 0);
3927 getOptional<bool>(
"isAdad", p.isAdad, j,
false);
3928 getOptional(
"name", p.name, j);
3929 getOptional(
"manufacturer", p.manufacturer, j);
3930 getOptional(
"model", p.model, j);
3931 getOptional(
"hardwareId", p.hardwareId, j);
3932 getOptional(
"serialNumber", p.serialNumber, j);
3933 getOptional(
"isDefault", p.isDefault, j);
3934 getOptional(
"type", p.type, j);
3935 getOptional(
"extra", p.extra, j);
3936 getOptional<bool>(
"isPresent", p.isPresent, j,
false);
3940 JSON_SERIALIZED_CLASS(ListOfAudioDeviceDescriptor)
3943 IMPLEMENT_JSON_SERIALIZATION()
3947 std::vector<AudioDeviceDescriptor> list;
3966 static void from_json(
const nlohmann::json& j, ListOfAudioDeviceDescriptor& p)
3969 getOptional<std::vector<AudioDeviceDescriptor>>(
"list", p.list, j);
3973 JSON_SERIALIZED_CLASS(Audio)
3983 IMPLEMENT_JSON_SERIALIZATION()
3984 IMPLEMENT_JSON_DOCUMENTATION(
Audio)
4026 inputHardwareId.clear();
4029 outputHardwareId.clear();
4031 outputLevelLeft = 100;
4032 outputLevelRight = 100;
4033 outputMuted =
false;
4037 static void to_json(nlohmann::json& j,
const Audio& p)
4040 TOJSON_IMPL(enabled),
4041 TOJSON_IMPL(inputId),
4042 TOJSON_IMPL(inputHardwareId),
4043 TOJSON_IMPL(inputGain),
4044 TOJSON_IMPL(outputId),
4045 TOJSON_IMPL(outputHardwareId),
4046 TOJSON_IMPL(outputLevelLeft),
4047 TOJSON_IMPL(outputLevelRight),
4048 TOJSON_IMPL(outputMuted)
4051 static void from_json(
const nlohmann::json& j, Audio& p)
4054 getOptional<bool>(
"enabled", p.enabled, j,
true);
4055 getOptional<int>(
"inputId", p.inputId, j, 0);
4056 getOptional<std::string>(
"inputHardwareId", p.inputHardwareId, j, EMPTY_STRING);
4057 getOptional<int>(
"inputGain", p.inputGain, j, 0);
4058 getOptional<int>(
"outputId", p.outputId, j, 0);
4059 getOptional<std::string>(
"outputHardwareId", p.outputHardwareId, j, EMPTY_STRING);
4060 getOptional<int>(
"outputGain", p.outputGain, j, 0);
4061 getOptional<int>(
"outputLevelLeft", p.outputLevelLeft, j, 100);
4062 getOptional<int>(
"outputLevelRight", p.outputLevelRight, j, 100);
4063 getOptional<bool>(
"outputMuted", p.outputMuted, j,
false);
4067 JSON_SERIALIZED_CLASS(TalkerInformation)
4079 IMPLEMENT_JSON_SERIALIZATION()
4095 matSsrcGenerated = 2
4096 } ManufacturedAliasType_t;
4141 aliasSpecializer = 0;
4143 manufacturedAliasType = ManufacturedAliasType_t::matNone;
4148 static void to_json(nlohmann::json& j,
const TalkerInformation& p)
4152 TOJSON_IMPL(nodeId),
4153 TOJSON_IMPL(rxFlags),
4154 TOJSON_IMPL(txPriority),
4156 TOJSON_IMPL(duplicateCount),
4157 TOJSON_IMPL(aliasSpecializer),
4158 TOJSON_IMPL(rxMuted),
4159 TOJSON_IMPL(manufacturedAliasType),
4163 static void from_json(
const nlohmann::json& j, TalkerInformation& p)
4166 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
4167 getOptional<std::string>(
"nodeId", p.nodeId, j, EMPTY_STRING);
4168 getOptional<uint16_t>(
"rxFlags", p.rxFlags, j, 0);
4169 getOptional<int>(
"txPriority", p.txPriority, j, 0);
4170 getOptional<uint32_t>(
"txId", p.txId, j, 0);
4171 getOptional<int>(
"duplicateCount", p.duplicateCount, j, 0);
4172 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
4173 getOptional<bool>(
"rxMuted", p.rxMuted, j,
false);
4174 getOptional<TalkerInformation::ManufacturedAliasType_t>(
"manufacturedAliasType", p.manufacturedAliasType, j, TalkerInformation::ManufacturedAliasType_t::matNone);
4175 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
4179 JSON_SERIALIZED_CLASS(GroupTalkers)
4193 IMPLEMENT_JSON_SERIALIZATION()
4198 std::vector<TalkerInformation>
list;
4211 static void to_json(nlohmann::json& j,
const GroupTalkers& p)
4217 static void from_json(
const nlohmann::json& j, GroupTalkers& p)
4220 getOptional<std::vector<TalkerInformation>>(
"list", p.list, j);
4224 JSON_SERIALIZED_CLASS(Presence)
4236 IMPLEMENT_JSON_SERIALIZATION()
4237 IMPLEMENT_JSON_DOCUMENTATION(
Presence)
4285 minIntervalSecs = 5;
4286 reduceImmediacy =
false;
4290 static void to_json(nlohmann::json& j,
const Presence& p)
4293 TOJSON_IMPL(format),
4294 TOJSON_IMPL(intervalSecs),
4295 TOJSON_IMPL(listenOnly),
4296 TOJSON_IMPL(minIntervalSecs),
4297 TOJSON_IMPL(reduceImmediacy)
4300 static void from_json(
const nlohmann::json& j, Presence& p)
4303 getOptional<Presence::Format_t>(
"format", p.format, j, Presence::Format_t::pfEngage);
4304 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 30);
4305 getOptional<bool>(
"listenOnly", p.listenOnly, j,
false);
4306 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 5);
4307 getOptional<bool>(
"reduceImmediacy", p.reduceImmediacy, j,
false);
4312 JSON_SERIALIZED_CLASS(Advertising)
4324 IMPLEMENT_JSON_SERIALIZATION()
4346 alwaysAdvertise =
false;
4350 static void to_json(nlohmann::json& j,
const Advertising& p)
4353 TOJSON_IMPL(enabled),
4354 TOJSON_IMPL(intervalMs),
4355 TOJSON_IMPL(alwaysAdvertise)
4358 static void from_json(
const nlohmann::json& j, Advertising& p)
4361 getOptional(
"enabled", p.enabled, j,
false);
4362 getOptional<int>(
"intervalMs", p.intervalMs, j, 20000);
4363 getOptional<bool>(
"alwaysAdvertise", p.alwaysAdvertise, j,
false);
4367 JSON_SERIALIZED_CLASS(GroupPriorityTranslation)
4379 IMPLEMENT_JSON_SERIALIZATION()
4405 static void to_json(nlohmann::json& j,
const GroupPriorityTranslation& p)
4410 TOJSON_IMPL(priority)
4413 static void from_json(
const nlohmann::json& j, GroupPriorityTranslation& p)
4416 j.at(
"rx").get_to(p.rx);
4417 j.at(
"tx").get_to(p.tx);
4418 FROMJSON_IMPL(priority,
int, 0);
4422 JSON_SERIALIZED_CLASS(GroupTimeline)
4436 IMPLEMENT_JSON_SERIALIZATION()
4455 maxAudioTimeMs = 30000;
4460 static void to_json(nlohmann::json& j,
const GroupTimeline& p)
4463 TOJSON_IMPL(enabled),
4464 TOJSON_IMPL(maxAudioTimeMs),
4465 TOJSON_IMPL(recordAudio)
4468 static void from_json(
const nlohmann::json& j, GroupTimeline& p)
4471 getOptional(
"enabled", p.enabled, j,
true);
4472 getOptional<int>(
"maxAudioTimeMs", p.maxAudioTimeMs, j, 30000);
4473 getOptional(
"recordAudio", p.recordAudio, j,
true);
4576 IMPLEMENT_JSON_SERIALIZATION()
4598 static void to_json(nlohmann::json& j,
const GroupAppTransport& p)
4601 TOJSON_IMPL(enabled),
4605 static void from_json(
const nlohmann::json& j, GroupAppTransport& p)
4608 getOptional<bool>(
"enabled", p.enabled, j,
false);
4609 getOptional<std::string>(
"id", p.id, j);
4613 JSON_SERIALIZED_CLASS(RtpProfile)
4625 IMPLEMENT_JSON_SERIALIZATION()
4643 jmReleaseOnTxEnd = 2
4706 jitterMaxMs = 10000;
4708 jitterMaxFactor = 8;
4709 jitterTrimPercentage = 10;
4710 jitterUnderrunReductionThresholdMs = 1500;
4711 jitterUnderrunReductionAger = 100;
4712 latePacketSequenceRange = 5;
4713 latePacketTimestampRangeMs = 2000;
4714 inboundProcessorInactivityMs = 500;
4715 jitterForceTrimAtMs = 0;
4716 rtcpPresenceTimeoutMs = 45000;
4717 jitterMaxExceededClipPerc = 10;
4718 jitterMaxExceededClipHangMs = 1500;
4719 zombieLifetimeMs = 15000;
4720 jitterMaxTrimMs = 250;
4721 signalledInboundProcessorInactivityMs = (inboundProcessorInactivityMs * 4);
4725 static void to_json(nlohmann::json& j,
const RtpProfile& p)
4729 TOJSON_IMPL(jitterMaxMs),
4730 TOJSON_IMPL(inboundProcessorInactivityMs),
4731 TOJSON_IMPL(jitterMinMs),
4732 TOJSON_IMPL(jitterMaxFactor),
4733 TOJSON_IMPL(jitterTrimPercentage),
4734 TOJSON_IMPL(jitterUnderrunReductionThresholdMs),
4735 TOJSON_IMPL(jitterUnderrunReductionAger),
4736 TOJSON_IMPL(latePacketSequenceRange),
4737 TOJSON_IMPL(latePacketTimestampRangeMs),
4738 TOJSON_IMPL(inboundProcessorInactivityMs),
4739 TOJSON_IMPL(jitterForceTrimAtMs),
4740 TOJSON_IMPL(jitterMaxExceededClipPerc),
4741 TOJSON_IMPL(jitterMaxExceededClipHangMs),
4742 TOJSON_IMPL(zombieLifetimeMs),
4743 TOJSON_IMPL(jitterMaxTrimMs),
4744 TOJSON_IMPL(signalledInboundProcessorInactivityMs)
4747 static void from_json(
const nlohmann::json& j, RtpProfile& p)
4750 FROMJSON_IMPL(mode, RtpProfile::JitterMode_t, RtpProfile::JitterMode_t::jmStandard);
4751 FROMJSON_IMPL(jitterMaxMs,
int, 10000);
4752 FROMJSON_IMPL(jitterMinMs,
int, 20);
4753 FROMJSON_IMPL(jitterMaxFactor,
int, 8);
4754 FROMJSON_IMPL(jitterTrimPercentage,
int, 10);
4755 FROMJSON_IMPL(jitterUnderrunReductionThresholdMs,
int, 1500);
4756 FROMJSON_IMPL(jitterUnderrunReductionAger,
int, 100);
4757 FROMJSON_IMPL(latePacketSequenceRange,
int, 5);
4758 FROMJSON_IMPL(latePacketTimestampRangeMs,
int, 2000);
4759 FROMJSON_IMPL(inboundProcessorInactivityMs,
int, 500);
4760 FROMJSON_IMPL(jitterForceTrimAtMs,
int, 0);
4761 FROMJSON_IMPL(rtcpPresenceTimeoutMs,
int, 45000);
4762 FROMJSON_IMPL(jitterMaxExceededClipPerc,
int, 10);
4763 FROMJSON_IMPL(jitterMaxExceededClipHangMs,
int, 1500);
4764 FROMJSON_IMPL(zombieLifetimeMs,
int, 15000);
4765 FROMJSON_IMPL(jitterMaxTrimMs,
int, 250);
4766 FROMJSON_IMPL(signalledInboundProcessorInactivityMs,
int, (p.inboundProcessorInactivityMs * 4));
4770 JSON_SERIALIZED_CLASS(Tls)
4782 IMPLEMENT_JSON_SERIALIZATION()
4783 IMPLEMENT_JSON_DOCUMENTATION(
Tls)
4813 allowSelfSignedCertificates =
false;
4814 caCertificates.clear();
4815 subjectRestrictions.clear();
4816 issuerRestrictions.clear();
4821 static void to_json(nlohmann::json& j,
const Tls& p)
4824 TOJSON_IMPL(verifyPeers),
4825 TOJSON_IMPL(allowSelfSignedCertificates),
4826 TOJSON_IMPL(caCertificates),
4827 TOJSON_IMPL(subjectRestrictions),
4828 TOJSON_IMPL(issuerRestrictions),
4829 TOJSON_IMPL(crlSerials)
4832 static void from_json(
const nlohmann::json& j, Tls& p)
4835 getOptional<bool>(
"verifyPeers", p.verifyPeers, j,
true);
4836 getOptional<bool>(
"allowSelfSignedCertificates", p.allowSelfSignedCertificates, j,
false);
4837 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
4838 getOptional<StringRestrictionList>(
"subjectRestrictions", p.subjectRestrictions, j);
4839 getOptional<StringRestrictionList>(
"issuerRestrictions", p.issuerRestrictions, j);
4840 getOptional<std::vector<std::string>>(
"crlSerials", p.crlSerials, j);
4844 JSON_SERIALIZED_CLASS(RangerPackets)
4858 IMPLEMENT_JSON_SERIALIZATION()
4879 virtual void initForDocumenting()
4884 static void to_json(nlohmann::json& j,
const RangerPackets& p)
4887 TOJSON_IMPL(hangTimerSecs),
4891 static void from_json(
const nlohmann::json& j, RangerPackets& p)
4894 getOptional<int>(
"hangTimerSecs", p.hangTimerSecs, j, 11);
4895 getOptional<int>(
"count", p.count, j, 5);
4899 JSON_SERIALIZED_CLASS(Source)
4913 IMPLEMENT_JSON_SERIALIZATION()
4914 IMPLEMENT_JSON_DOCUMENTATION(
Source)
4921 uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
4927 uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
4937 memset(_internal_binary_nodeId, 0,
sizeof(_internal_binary_nodeId));
4940 memset(_internal_binary_alias, 0,
sizeof(_internal_binary_alias));
4943 virtual void initForDocumenting()
4948 static void to_json(nlohmann::json& j,
const Source& p)
4951 TOJSON_IMPL(nodeId),
4955 static void from_json(
const nlohmann::json& j, Source& p)
4958 FROMJSON_IMPL_SIMPLE(nodeId);
4959 FROMJSON_IMPL_SIMPLE(alias);
4963 JSON_SERIALIZED_CLASS(GroupBridgeTargetOutputDetail)
4977 IMPLEMENT_JSON_SERIALIZATION()
5014 mode = BridgingOpMode_t::bomRaw;
5015 mixedStreamTxParams.clear();
5018 virtual void initForDocumenting()
5024 static void to_json(nlohmann::json& j,
const GroupBridgeTargetOutputDetail& p)
5028 TOJSON_IMPL(mixedStreamTxParams)
5031 static void from_json(
const nlohmann::json& j, GroupBridgeTargetOutputDetail& p)
5034 FROMJSON_IMPL_SIMPLE(mode);
5035 FROMJSON_IMPL_SIMPLE(mixedStreamTxParams);
5039 JSON_SERIALIZED_CLASS(GroupDefaultAudioPriority)
5053 IMPLEMENT_JSON_SERIALIZATION()
5074 virtual void initForDocumenting()
5080 static void to_json(nlohmann::json& j,
const GroupDefaultAudioPriority& p)
5087 static void from_json(
const nlohmann::json& j, GroupDefaultAudioPriority& p)
5090 FROMJSON_IMPL_SIMPLE(tx);
5091 FROMJSON_IMPL_SIMPLE(rx);
5095 JSON_SERIALIZED_CLASS(Group)
5108 IMPLEMENT_JSON_SERIALIZATION()
5109 IMPLEMENT_JSON_DOCUMENTATION(
Group)
5132 iagpAnonymousAlias = 0,
5136 } InboundAliasGenerationPolicy_t;
5311 bridgeTargetOutputDetail.clear();
5312 defaultAudioPriority.clear();
5316 interfaceName.clear();
5322 cryptoPassword.clear();
5326 rallypoints.clear();
5327 rallypointCluster.clear();
5332 blockAdvertising =
false;
5338 enableMulticastFailover =
false;
5339 multicastFailoverSecs = 10;
5341 rtcpPresenceRx.clear();
5343 presenceGroupAffinities.clear();
5344 disablePacketEvents =
false;
5346 rfc4733RtpPayloadId = 0;
5347 inboundRtpPayloadTypeTranslations.clear();
5348 priorityTranslation.clear();
5350 stickyTidHangSecs = 10;
5351 anonymousAlias.clear();
5354 appTransport.clear();
5355 allowLoopback =
false;
5358 rangerPackets.clear();
5360 _wasDeserialized_rtpProfile =
false;
5362 txImpairment.clear();
5363 rxImpairment.clear();
5365 specializerAffinities.clear();
5369 ignoreSources.clear();
5371 languageCode.clear();
5378 inboundAliasGenerationPolicy = iagpAnonymousAlias;
5381 ignoreAudioTraffic =
false;
5385 static void to_json(nlohmann::json& j,
const Group& p)
5389 TOJSON_IMPL(bridgeTargetOutputDetail),
5390 TOJSON_IMPL(defaultAudioPriority),
5393 TOJSON_IMPL(spokenName),
5394 TOJSON_IMPL(interfaceName),
5397 TOJSON_IMPL(txOptions),
5398 TOJSON_IMPL(txAudio),
5399 TOJSON_IMPL(presence),
5400 TOJSON_IMPL(cryptoPassword),
5409 TOJSON_IMPL(timeline),
5410 TOJSON_IMPL(blockAdvertising),
5411 TOJSON_IMPL(source),
5412 TOJSON_IMPL(maxRxSecs),
5413 TOJSON_IMPL(enableMulticastFailover),
5414 TOJSON_IMPL(multicastFailoverSecs),
5415 TOJSON_IMPL(rtcpPresenceRx),
5416 TOJSON_IMPL(presenceGroupAffinities),
5417 TOJSON_IMPL(disablePacketEvents),
5418 TOJSON_IMPL(rfc4733RtpPayloadId),
5419 TOJSON_IMPL(inboundRtpPayloadTypeTranslations),
5420 TOJSON_IMPL(priorityTranslation),
5421 TOJSON_IMPL(stickyTidHangSecs),
5422 TOJSON_IMPL(anonymousAlias),
5423 TOJSON_IMPL(lbCrypto),
5424 TOJSON_IMPL(appTransport),
5425 TOJSON_IMPL(allowLoopback),
5426 TOJSON_IMPL(rangerPackets),
5428 TOJSON_IMPL(txImpairment),
5429 TOJSON_IMPL(rxImpairment),
5431 TOJSON_IMPL(specializerAffinities),
5433 TOJSON_IMPL(securityLevel),
5435 TOJSON_IMPL(ignoreSources),
5437 TOJSON_IMPL(languageCode),
5438 TOJSON_IMPL(synVoice),
5440 TOJSON_IMPL(rxCapture),
5441 TOJSON_IMPL(txCapture),
5443 TOJSON_IMPL(blobRtpPayloadType),
5445 TOJSON_IMPL(inboundAliasGenerationPolicy),
5447 TOJSON_IMPL(gateIn),
5449 TOJSON_IMPL(ignoreAudioTraffic)
5455 if(p._wasDeserialized_rtpProfile || p.isDocumenting())
5457 j[
"rtpProfile"] = p.rtpProfile;
5460 if(p.isDocumenting())
5462 j[
"rallypointCluster"] = p.rallypointCluster;
5463 j[
"rallypoints"] = p.rallypoints;
5468 if(!p.rallypointCluster.rallypoints.empty())
5470 j[
"rallypointCluster"] = p.rallypointCluster;
5472 else if(!p.rallypoints.empty())
5474 j[
"rallypoints"] = p.rallypoints;
5478 static void from_json(
const nlohmann::json& j, Group& p)
5481 j.at(
"type").get_to(p.type);
5482 getOptional<GroupBridgeTargetOutputDetail>(
"bridgeTargetOutputDetail", p.bridgeTargetOutputDetail, j);
5483 j.at(
"id").get_to(p.id);
5484 getOptional<std::string>(
"name", p.name, j);
5485 getOptional<std::string>(
"spokenName", p.spokenName, j);
5486 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
5487 getOptional<NetworkAddress>(
"rx", p.rx, j);
5488 getOptional<NetworkAddress>(
"tx", p.tx, j);
5489 getOptional<NetworkTxOptions>(
"txOptions", p.txOptions, j);
5490 getOptional<std::string>(
"cryptoPassword", p.cryptoPassword, j);
5491 getOptional<std::string>(
"alias", p.alias, j);
5492 getOptional<TxAudio>(
"txAudio", p.txAudio, j);
5493 getOptional<Presence>(
"presence", p.presence, j);
5494 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
5495 getOptional<RallypointCluster>(
"rallypointCluster", p.rallypointCluster, j);
5496 getOptional<Audio>(
"audio", p.audio, j);
5497 getOptional<GroupTimeline>(
"timeline", p.timeline, j);
5498 getOptional<bool>(
"blockAdvertising", p.blockAdvertising, j,
false);
5499 getOptional<std::string>(
"source", p.source, j);
5500 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
5501 getOptional<bool>(
"enableMulticastFailover", p.enableMulticastFailover, j,
false);
5502 getOptional<int>(
"multicastFailoverSecs", p.multicastFailoverSecs, j, 10);
5503 getOptional<NetworkAddress>(
"rtcpPresenceRx", p.rtcpPresenceRx, j);
5504 getOptional<std::vector<std::string>>(
"presenceGroupAffinities", p.presenceGroupAffinities, j);
5505 getOptional<bool>(
"disablePacketEvents", p.disablePacketEvents, j,
false);
5506 getOptional<int>(
"rfc4733RtpPayloadId", p.rfc4733RtpPayloadId, j, 0);
5507 getOptional<std::vector<RtpPayloadTypeTranslation>>(
"inboundRtpPayloadTypeTranslations", p.inboundRtpPayloadTypeTranslations, j);
5508 getOptional<GroupPriorityTranslation>(
"priorityTranslation", p.priorityTranslation, j);
5509 getOptional<GroupDefaultAudioPriority>(
"defaultAudioPriority", p.defaultAudioPriority, j);
5510 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
5511 getOptional<std::string>(
"anonymousAlias", p.anonymousAlias, j);
5512 getOptional<bool>(
"lbCrypto", p.lbCrypto, j,
false);
5513 getOptional<GroupAppTransport>(
"appTransport", p.appTransport, j);
5514 getOptional<bool>(
"allowLoopback", p.allowLoopback, j,
false);
5515 getOptionalWithIndicator<RtpProfile>(
"rtpProfile", p.rtpProfile, j, &p._wasDeserialized_rtpProfile);
5516 getOptional<RangerPackets>(
"rangerPackets", p.rangerPackets, j);
5517 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
5518 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
5519 getOptional<std::vector<uint16_t>>(
"specializerAffinities", p.specializerAffinities, j);
5520 getOptional<uint32_t>(
"securityLevel", p.securityLevel, j, 0);
5521 getOptional<std::vector<Source>>(
"ignoreSources", p.ignoreSources, j);
5522 getOptional<std::string>(
"languageCode", p.languageCode, j);
5523 getOptional<std::string>(
"synVoice", p.synVoice, j);
5525 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
5526 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
5530 getOptional<Group::InboundAliasGenerationPolicy_t>(
"inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
5532 getOptional<AudioGate>(
"gateIn", p.gateIn, j);
5534 getOptional<bool>(
"ignoreAudioTraffic", p.ignoreAudioTraffic, j,
false);
5536 FROMJSON_BASE_IMPL();
5541 JSON_SERIALIZED_CLASS(Mission)
5544 IMPLEMENT_JSON_SERIALIZATION()
5545 IMPLEMENT_JSON_DOCUMENTATION(
Mission)
5550 std::vector<Group> groups;
5551 std::chrono::system_clock::time_point begins;
5552 std::chrono::system_clock::time_point ends;
5553 std::string certStoreId;
5554 int multicastFailoverPolicy;
5562 certStoreId.clear();
5563 multicastFailoverPolicy = 0;
5568 static void to_json(nlohmann::json& j,
const Mission& p)
5573 TOJSON_IMPL(groups),
5574 TOJSON_IMPL(certStoreId),
5575 TOJSON_IMPL(multicastFailoverPolicy),
5576 TOJSON_IMPL(rallypoint)
5580 static void from_json(
const nlohmann::json& j, Mission& p)
5583 j.at(
"id").get_to(p.id);
5584 j.at(
"name").get_to(p.name);
5589 j.at(
"groups").get_to(p.groups);
5596 FROMJSON_IMPL(certStoreId, std::string, EMPTY_STRING);
5597 FROMJSON_IMPL(multicastFailoverPolicy,
int, 0);
5598 getOptional<Rallypoint>(
"rallypoint", p.rallypoint, j);
5602 JSON_SERIALIZED_CLASS(LicenseDescriptor)
5614 IMPLEMENT_JSON_SERIALIZATION()
5623 static const int STATUS_OK = 0;
5624 static const int ERR_NULL_ENTITLEMENT_KEY = -1;
5625 static const int ERR_NULL_LICENSE_KEY = -2;
5626 static const int ERR_INVALID_LICENSE_KEY_LEN = -3;
5627 static const int ERR_LICENSE_KEY_VERIFICATION_FAILURE = -4;
5628 static const int ERR_ACTIVATION_CODE_VERIFICATION_FAILURE = -5;
5629 static const int ERR_INVALID_EXPIRATION_DATE = -6;
5630 static const int ERR_GENERAL_FAILURE = -7;
5631 static const int ERR_NOT_INITIALIZED = -8;
5632 static const int ERR_REQUIRES_ACTIVATION = -9;
5633 static const int ERR_LICENSE_NOT_SUITED_FOR_ACTIVATION = -10;
5641 static const uint8_t LIC_CARGO_FLAG_LIMIT_TO_FEATURES = 0x01;
5708 entitlement.clear();
5710 activationCode.clear();
5713 expiresFormatted.clear();
5718 status = ERR_NOT_INITIALIZED;
5719 manufacturerId.clear();
5720 activationHmac.clear();
5724 static void to_json(nlohmann::json& j,
const LicenseDescriptor& p)
5728 {
"entitlement",
"*entitlement*"},
5730 TOJSON_IMPL(activationCode),
5732 TOJSON_IMPL(expires),
5733 TOJSON_IMPL(expiresFormatted),
5735 TOJSON_IMPL(deviceId),
5736 TOJSON_IMPL(status),
5738 {
"manufacturerId",
"*manufacturerId*"},
5740 TOJSON_IMPL(cargoFlags),
5741 TOJSON_IMPL(activationHmac)
5745 static void from_json(
const nlohmann::json& j, LicenseDescriptor& p)
5748 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
5749 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5750 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
5751 FROMJSON_IMPL(type,
int, 0);
5752 FROMJSON_IMPL(expires, time_t, 0);
5753 FROMJSON_IMPL(expiresFormatted, std::string, EMPTY_STRING);
5754 FROMJSON_IMPL(flags, uint32_t, 0);
5755 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
5756 FROMJSON_IMPL(status,
int, LicenseDescriptor::ERR_NOT_INITIALIZED);
5757 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
5758 FROMJSON_IMPL(cargo, std::string, EMPTY_STRING);
5759 FROMJSON_IMPL(cargoFlags, uint8_t, 0);
5760 FROMJSON_IMPL(activationHmac, std::string, EMPTY_STRING);
5765 JSON_SERIALIZED_CLASS(EngineNetworkingRpUdpStreaming)
5779 IMPLEMENT_JSON_SERIALIZATION()
5807 keepaliveIntervalSecs = 15;
5808 priority = TxPriority_t::priVoice;
5812 virtual void initForDocumenting()
5817 static void to_json(nlohmann::json& j,
const EngineNetworkingRpUdpStreaming& p)
5820 TOJSON_IMPL(enabled),
5822 TOJSON_IMPL(keepaliveIntervalSecs),
5823 TOJSON_IMPL(priority),
5827 static void from_json(
const nlohmann::json& j, EngineNetworkingRpUdpStreaming& p)
5830 getOptional<bool>(
"enabled", p.enabled, j,
false);
5831 getOptional<int>(
"port", p.port, j, 0);
5832 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
5833 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
5834 getOptional<int>(
"ttl", p.ttl, j, 64);
5838 JSON_SERIALIZED_CLASS(EnginePolicyNetworking)
5849 IMPLEMENT_JSON_SERIALIZATION()
5885 multicastRejoinSecs = 8;
5886 rallypointRtTestIntervalMs = 60000;
5887 logRtpJitterBufferStats =
false;
5888 preventMulticastFailover =
false;
5889 addressResolutionPolicy = AddressResolutionPolicy_t::arpIpv6ThenIpv4;
5891 rpUdpStreaming.clear();
5896 static void to_json(nlohmann::json& j,
const EnginePolicyNetworking& p)
5899 TOJSON_IMPL(defaultNic),
5900 TOJSON_IMPL(multicastRejoinSecs),
5902 TOJSON_IMPL(rallypointRtTestIntervalMs),
5903 TOJSON_IMPL(logRtpJitterBufferStats),
5904 TOJSON_IMPL(preventMulticastFailover),
5906 TOJSON_IMPL(rpUdpStreaming),
5907 TOJSON_IMPL(rtpProfile),
5908 TOJSON_IMPL(addressResolutionPolicy)
5911 static void from_json(
const nlohmann::json& j, EnginePolicyNetworking& p)
5914 FROMJSON_IMPL(defaultNic, std::string, EMPTY_STRING);
5915 FROMJSON_IMPL(multicastRejoinSecs,
int, 8);
5916 FROMJSON_IMPL(rallypointRtTestIntervalMs,
int, 60000);
5917 FROMJSON_IMPL(logRtpJitterBufferStats,
bool,
false);
5918 FROMJSON_IMPL(preventMulticastFailover,
bool,
false);
5920 getOptional<EngineNetworkingRpUdpStreaming>(
"rpUdpStreaming", p.rpUdpStreaming, j);
5921 getOptional<RtpProfile>(
"rtpProfile", p.rtpProfile, j);
5922 getOptional<AddressResolutionPolicy_t>(
"addressResolutionPolicy", p.addressResolutionPolicy, j, AddressResolutionPolicy_t::arpIpv6ThenIpv4);
5926 JSON_SERIALIZED_CLASS(Aec)
5938 IMPLEMENT_JSON_SERIALIZATION()
5939 IMPLEMENT_JSON_DOCUMENTATION(
Aec)
5994 static void to_json(nlohmann::json& j,
const Aec& p)
5997 TOJSON_IMPL(enabled),
5999 TOJSON_IMPL(speakerTailMs),
6003 static void from_json(
const nlohmann::json& j, Aec& p)
6006 FROMJSON_IMPL(enabled,
bool,
false);
6007 FROMJSON_IMPL(mode, Aec::Mode_t, Aec::Mode_t::aecmDefault);
6008 FROMJSON_IMPL(speakerTailMs,
int, 60);
6009 FROMJSON_IMPL(cng,
bool,
true);
6013 JSON_SERIALIZED_CLASS(Vad)
6025 IMPLEMENT_JSON_SERIALIZATION()
6026 IMPLEMENT_JSON_DOCUMENTATION(
Vad)
6046 vamVeryAggressive = 3
6067 static void to_json(nlohmann::json& j,
const Vad& p)
6070 TOJSON_IMPL(enabled),
6074 static void from_json(
const nlohmann::json& j, Vad& p)
6077 FROMJSON_IMPL(enabled,
bool,
false);
6078 FROMJSON_IMPL(mode, Vad::Mode_t, Vad::Mode_t::vamDefault);
6082 JSON_SERIALIZED_CLASS(Bridge)
6094 IMPLEMENT_JSON_SERIALIZATION()
6095 IMPLEMENT_JSON_DOCUMENTATION(
Bridge)
6126 static void to_json(nlohmann::json& j,
const Bridge& p)
6131 TOJSON_IMPL(groups),
6132 TOJSON_IMPL(enabled)
6135 static void from_json(
const nlohmann::json& j, Bridge& p)
6138 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
6139 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
6140 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
6141 FROMJSON_IMPL(enabled,
bool,
true);
6145 JSON_SERIALIZED_CLASS(AndroidAudio)
6157 IMPLEMENT_JSON_SERIALIZATION()
6161 constexpr static int INVALID_SESSION_ID = -9999;
6222 performanceMode = 12;
6226 sessionId = AndroidAudio::INVALID_SESSION_ID;
6231 static void to_json(nlohmann::json& j,
const AndroidAudio& p)
6235 TOJSON_IMPL(sharingMode),
6236 TOJSON_IMPL(performanceMode),
6238 TOJSON_IMPL(contentType),
6239 TOJSON_IMPL(inputPreset),
6240 TOJSON_IMPL(sessionId),
6241 TOJSON_IMPL(engineMode)
6244 static void from_json(
const nlohmann::json& j, AndroidAudio& p)
6247 FROMJSON_IMPL(api,
int, 0);
6248 FROMJSON_IMPL(sharingMode,
int, 0);
6249 FROMJSON_IMPL(performanceMode,
int, 12);
6250 FROMJSON_IMPL(usage,
int, 2);
6251 FROMJSON_IMPL(contentType,
int, 1);
6252 FROMJSON_IMPL(inputPreset,
int, 7);
6253 FROMJSON_IMPL(sessionId,
int, AndroidAudio::INVALID_SESSION_ID);
6254 FROMJSON_IMPL(engineMode,
int, 0);
6258 JSON_SERIALIZED_CLASS(EnginePolicyAudio)
6270 IMPLEMENT_JSON_SERIALIZATION()
6328 hardwareEnabled =
true;
6329 internalRate = 16000;
6330 internalChannels = 2;
6337 denoiseInput =
false;
6338 denoiseOutput =
false;
6339 saveInputPcm =
false;
6340 saveOutputPcm =
false;
6345 static void to_json(nlohmann::json& j,
const EnginePolicyAudio& p)
6348 TOJSON_IMPL(enabled),
6349 TOJSON_IMPL(hardwareEnabled),
6350 TOJSON_IMPL(internalRate),
6351 TOJSON_IMPL(internalChannels),
6352 TOJSON_IMPL(muteTxOnTx),
6355 TOJSON_IMPL(android),
6356 TOJSON_IMPL(inputAgc),
6357 TOJSON_IMPL(outputAgc),
6358 TOJSON_IMPL(denoiseInput),
6359 TOJSON_IMPL(denoiseOutput),
6360 TOJSON_IMPL(saveInputPcm),
6361 TOJSON_IMPL(saveOutputPcm),
6362 TOJSON_IMPL(registry)
6365 static void from_json(
const nlohmann::json& j, EnginePolicyAudio& p)
6368 getOptional<bool>(
"enabled", p.enabled, j,
true);
6369 getOptional<bool>(
"hardwareEnabled", p.hardwareEnabled, j,
true);
6370 FROMJSON_IMPL(internalRate,
int, 16000);
6371 FROMJSON_IMPL(internalChannels,
int, 2);
6373 FROMJSON_IMPL(muteTxOnTx,
bool,
false);
6374 getOptional<Aec>(
"aec", p.aec, j);
6375 getOptional<Vad>(
"vad", p.vad, j);
6376 getOptional<AndroidAudio>(
"android", p.android, j);
6377 getOptional<Agc>(
"inputAgc", p.inputAgc, j);
6378 getOptional<Agc>(
"outputAgc", p.outputAgc, j);
6379 FROMJSON_IMPL(denoiseInput,
bool,
false);
6380 FROMJSON_IMPL(denoiseOutput,
bool,
false);
6381 FROMJSON_IMPL(saveInputPcm,
bool,
false);
6382 FROMJSON_IMPL(saveOutputPcm,
bool,
false);
6383 getOptional<AudioRegistry>(
"registry", p.registry, j);
6387 JSON_SERIALIZED_CLASS(SecurityCertificate)
6399 IMPLEMENT_JSON_SERIALIZATION()
6421 certificate.clear();
6426 static void to_json(nlohmann::json& j,
const SecurityCertificate& p)
6429 TOJSON_IMPL(certificate),
6433 static void from_json(
const nlohmann::json& j, SecurityCertificate& p)
6436 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6437 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6442 JSON_SERIALIZED_CLASS(EnginePolicySecurity)
6455 IMPLEMENT_JSON_SERIALIZATION()
6488 certificate.clear();
6489 caCertificates.clear();
6493 static void to_json(nlohmann::json& j,
const EnginePolicySecurity& p)
6496 TOJSON_IMPL(certificate),
6497 TOJSON_IMPL(caCertificates)
6500 static void from_json(
const nlohmann::json& j, EnginePolicySecurity& p)
6503 getOptional(
"certificate", p.certificate, j);
6504 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
6508 JSON_SERIALIZED_CLASS(EnginePolicyLogging)
6520 IMPLEMENT_JSON_SERIALIZATION()
6553 enableSyslog =
false;
6557 static void to_json(nlohmann::json& j,
const EnginePolicyLogging& p)
6560 TOJSON_IMPL(maxLevel),
6561 TOJSON_IMPL(enableSyslog)
6564 static void from_json(
const nlohmann::json& j, EnginePolicyLogging& p)
6567 getOptional(
"maxLevel", p.maxLevel, j, 4);
6568 getOptional(
"enableSyslog", p.enableSyslog, j);
6573 JSON_SERIALIZED_CLASS(EnginePolicyDatabase)
6576 IMPLEMENT_JSON_SERIALIZATION()
6587 DatabaseType_t type;
6588 std::string fixedFileName;
6589 bool forceMaintenance;
6599 type = DatabaseType_t::dbtFixedMemory;
6600 fixedFileName.clear();
6601 forceMaintenance =
false;
6602 reclaimSpace =
false;
6610 TOJSON_IMPL(fixedFileName),
6611 TOJSON_IMPL(forceMaintenance),
6612 TOJSON_IMPL(reclaimSpace)
6615 static void from_json(
const nlohmann::json& j, EnginePolicyDatabase& p)
6618 FROMJSON_IMPL(type, EnginePolicyDatabase::DatabaseType_t, EnginePolicyDatabase::DatabaseType_t::dbtFixedMemory);
6619 FROMJSON_IMPL(fixedFileName, std::string, EMPTY_STRING);
6620 FROMJSON_IMPL(forceMaintenance,
bool,
false);
6621 FROMJSON_IMPL(reclaimSpace,
bool,
false);
6626 JSON_SERIALIZED_CLASS(SecureSignature)
6636 IMPLEMENT_JSON_SERIALIZATION()
6657 certificate.clear();
6663 static void to_json(nlohmann::json& j,
const SecureSignature& p)
6666 TOJSON_IMPL(certificate),
6668 TOJSON_IMPL(signature)
6671 static void from_json(
const nlohmann::json& j, SecureSignature& p)
6674 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6676 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
6680 JSON_SERIALIZED_CLASS(NamedAudioDevice)
6683 IMPLEMENT_JSON_SERIALIZATION()
6688 std::string manufacturer;
6691 std::string serialNumber;
6704 manufacturer.clear();
6707 serialNumber.clear();
6718 TOJSON_IMPL(manufacturer),
6721 TOJSON_IMPL(serialNumber),
6724 TOJSON_IMPL(isDefault),
6727 static void from_json(
const nlohmann::json& j, NamedAudioDevice& p)
6730 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6731 getOptional<std::string>(
"manufacturer", p.manufacturer, j, EMPTY_STRING);
6732 getOptional<std::string>(
"model", p.model, j, EMPTY_STRING);
6733 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
6734 getOptional<std::string>(
"serialNumber", p.serialNumber, j, EMPTY_STRING);
6735 getOptional<std::string>(
"type", p.type, j, EMPTY_STRING);
6736 getOptional<std::string>(
"extra", p.extra, j, EMPTY_STRING);
6737 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
6742 JSON_SERIALIZED_CLASS(EnginePolicyNamedAudioDevices)
6745 IMPLEMENT_JSON_SERIALIZATION()
6749 std::vector<NamedAudioDevice> inputs;
6750 std::vector<NamedAudioDevice> outputs;
6767 TOJSON_IMPL(inputs),
6768 TOJSON_IMPL(outputs)
6771 static void from_json(
const nlohmann::json& j, EnginePolicyNamedAudioDevices& p)
6774 getOptional<std::vector<NamedAudioDevice>>(
"inputs", p.inputs, j);
6775 getOptional<std::vector<NamedAudioDevice>>(
"outputs", p.outputs, j);
6779 JSON_SERIALIZED_CLASS(Licensing)
6793 IMPLEMENT_JSON_SERIALIZATION()
6820 entitlement.clear();
6822 activationCode.clear();
6824 manufacturerId.clear();
6828 static void to_json(nlohmann::json& j,
const Licensing& p)
6831 TOJSON_IMPL(entitlement),
6833 TOJSON_IMPL(activationCode),
6834 TOJSON_IMPL(deviceId),
6835 TOJSON_IMPL(manufacturerId)
6838 static void from_json(
const nlohmann::json& j, Licensing& p)
6841 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
6842 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6843 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
6844 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
6845 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
6849 JSON_SERIALIZED_CLASS(DiscoveryMagellan)
6861 IMPLEMENT_JSON_SERIALIZATION()
6886 interfaceName.clear();
6892 static void to_json(nlohmann::json& j,
const DiscoveryMagellan& p)
6895 TOJSON_IMPL(enabled),
6896 TOJSON_IMPL(interfaceName),
6897 TOJSON_IMPL(security),
6901 static void from_json(
const nlohmann::json& j, DiscoveryMagellan& p)
6904 getOptional(
"enabled", p.enabled, j,
false);
6905 getOptional<Tls>(
"tls", p.tls, j);
6906 getOptional<SecurityCertificate>(
"security", p.security, j);
6907 FROMJSON_IMPL(interfaceName, std::string, EMPTY_STRING);
6911 JSON_SERIALIZED_CLASS(DiscoverySsdp)
6923 IMPLEMENT_JSON_SERIALIZATION()
6954 interfaceName.clear();
6956 searchTerms.clear();
6957 ageTimeoutMs = 30000;
6958 advertising.clear();
6962 static void to_json(nlohmann::json& j,
const DiscoverySsdp& p)
6965 TOJSON_IMPL(enabled),
6966 TOJSON_IMPL(interfaceName),
6967 TOJSON_IMPL(address),
6968 TOJSON_IMPL(searchTerms),
6969 TOJSON_IMPL(ageTimeoutMs),
6970 TOJSON_IMPL(advertising)
6973 static void from_json(
const nlohmann::json& j, DiscoverySsdp& p)
6976 getOptional(
"enabled", p.enabled, j,
false);
6977 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6979 getOptional<NetworkAddress>(
"address", p.address, j);
6980 if(p.address.address.empty())
6982 p.address.address =
"255.255.255.255";
6984 if(p.address.port <= 0)
6986 p.address.port = 1900;
6989 getOptional<std::vector<std::string>>(
"searchTerms", p.searchTerms, j);
6990 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6991 getOptional<Advertising>(
"advertising", p.advertising, j);
6995 JSON_SERIALIZED_CLASS(DiscoverySap)
7007 IMPLEMENT_JSON_SERIALIZATION()
7034 interfaceName.clear();
7036 ageTimeoutMs = 30000;
7037 advertising.clear();
7041 static void to_json(nlohmann::json& j,
const DiscoverySap& p)
7044 TOJSON_IMPL(enabled),
7045 TOJSON_IMPL(interfaceName),
7046 TOJSON_IMPL(address),
7047 TOJSON_IMPL(ageTimeoutMs),
7048 TOJSON_IMPL(advertising)
7051 static void from_json(
const nlohmann::json& j, DiscoverySap& p)
7054 getOptional(
"enabled", p.enabled, j,
false);
7055 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7056 getOptional<NetworkAddress>(
"address", p.address, j);
7057 if(p.address.address.empty())
7059 p.address.address =
"224.2.127.254";
7061 if(p.address.port <= 0)
7063 p.address.port = 9875;
7066 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7067 getOptional<Advertising>(
"advertising", p.advertising, j);
7071 JSON_SERIALIZED_CLASS(DiscoveryCistech)
7085 IMPLEMENT_JSON_SERIALIZATION()
7090 std::string interfaceName;
7102 interfaceName.clear();
7104 ageTimeoutMs = 30000;
7111 TOJSON_IMPL(enabled),
7112 TOJSON_IMPL(interfaceName),
7113 TOJSON_IMPL(address),
7114 TOJSON_IMPL(ageTimeoutMs)
7117 static void from_json(
const nlohmann::json& j, DiscoveryCistech& p)
7120 getOptional(
"enabled", p.enabled, j,
false);
7121 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
7122 getOptional<NetworkAddress>(
"address", p.address, j);
7123 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
7128 JSON_SERIALIZED_CLASS(DiscoveryTrellisware)
7140 IMPLEMENT_JSON_SERIALIZATION()
7163 static void to_json(nlohmann::json& j,
const DiscoveryTrellisware& p)
7166 TOJSON_IMPL(enabled),
7167 TOJSON_IMPL(security)
7170 static void from_json(
const nlohmann::json& j, DiscoveryTrellisware& p)
7173 getOptional(
"enabled", p.enabled, j,
false);
7174 getOptional<SecurityCertificate>(
"security", p.security, j);
7178 JSON_SERIALIZED_CLASS(DiscoveryConfiguration)
7190 IMPLEMENT_JSON_SERIALIZATION()
7223 static void to_json(nlohmann::json& j,
const DiscoveryConfiguration& p)
7226 TOJSON_IMPL(magellan),
7229 TOJSON_IMPL(cistech),
7230 TOJSON_IMPL(trellisware)
7233 static void from_json(
const nlohmann::json& j, DiscoveryConfiguration& p)
7236 getOptional<DiscoveryMagellan>(
"magellan", p.magellan, j);
7237 getOptional<DiscoverySsdp>(
"ssdp", p.ssdp, j);
7238 getOptional<DiscoverySap>(
"sap", p.sap, j);
7239 getOptional<DiscoveryCistech>(
"cistech", p.cistech, j);
7240 getOptional<DiscoveryTrellisware>(
"trellisware", p.trellisware, j);
7245 JSON_SERIALIZED_CLASS(EnginePolicyInternals)
7259 IMPLEMENT_JSON_SERIALIZATION()
7274 int logTaskQueueStatsIntervalMs;
7276 bool enableLazySpeakerClosure;
7313 housekeeperIntervalMs = 1000;
7314 logTaskQueueStatsIntervalMs = 0;
7317 enableLazySpeakerClosure =
false;
7318 rpClusterStrategy = RallypointCluster::ConnectionStrategy_t::csRoundRobin;
7319 rpClusterRolloverSecs = 10;
7320 rtpExpirationCheckIntervalMs = 250;
7321 rpConnectionTimeoutSecs = 0;
7322 rpTransactionTimeoutMs = 0;
7323 stickyTidHangSecs = 10;
7324 uriStreamingIntervalMs = 60;
7325 delayedMicrophoneClosureSecs = 15;
7330 static void to_json(nlohmann::json& j,
const EnginePolicyInternals& p)
7333 TOJSON_IMPL(watchdog),
7334 TOJSON_IMPL(housekeeperIntervalMs),
7335 TOJSON_IMPL(logTaskQueueStatsIntervalMs),
7336 TOJSON_IMPL(maxTxSecs),
7337 TOJSON_IMPL(maxRxSecs),
7338 TOJSON_IMPL(enableLazySpeakerClosure),
7339 TOJSON_IMPL(rpClusterStrategy),
7340 TOJSON_IMPL(rpClusterRolloverSecs),
7341 TOJSON_IMPL(rtpExpirationCheckIntervalMs),
7342 TOJSON_IMPL(rpConnectionTimeoutSecs),
7343 TOJSON_IMPL(rpTransactionTimeoutMs),
7344 TOJSON_IMPL(stickyTidHangSecs),
7345 TOJSON_IMPL(uriStreamingIntervalMs),
7346 TOJSON_IMPL(delayedMicrophoneClosureSecs),
7350 static void from_json(
const nlohmann::json& j, EnginePolicyInternals& p)
7353 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
7354 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
7355 getOptional<int>(
"logTaskQueueStatsIntervalMs", p.logTaskQueueStatsIntervalMs, j, 0);
7356 getOptional<int>(
"maxTxSecs", p.maxTxSecs, j, 30);
7357 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
7358 getOptional<bool>(
"enableLazySpeakerClosure", p.enableLazySpeakerClosure, j,
false);
7359 getOptional<RallypointCluster::ConnectionStrategy_t>(
"rpClusterStrategy", p.rpClusterStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
7360 getOptional<int>(
"rpClusterRolloverSecs", p.rpClusterRolloverSecs, j, 10);
7361 getOptional<int>(
"rtpExpirationCheckIntervalMs", p.rtpExpirationCheckIntervalMs, j, 250);
7362 getOptional<int>(
"rpConnectionTimeoutSecs", p.rpConnectionTimeoutSecs, j, 0);
7363 getOptional<int>(
"rpTransactionTimeoutMs", p.rpTransactionTimeoutMs, j, 0);
7364 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
7365 getOptional<int>(
"uriStreamingIntervalMs", p.uriStreamingIntervalMs, j, 60);
7366 getOptional<int>(
"delayedMicrophoneClosureSecs", p.delayedMicrophoneClosureSecs, j, 15);
7367 getOptional<TuningSettings>(
"tuning", p.tuning, j);
7371 JSON_SERIALIZED_CLASS(EnginePolicyTimelines)
7385 IMPLEMENT_JSON_SERIALIZATION()
7447 storageRoot.clear();
7448 maxStorageMb = 1024;
7449 maxMemMb = maxStorageMb;
7450 maxAudioEventMemMb = maxMemMb;
7451 maxDiskMb = maxStorageMb;
7452 maxEventAgeSecs = (86400 * 30);
7453 groomingIntervalSecs = (60 * 30);
7455 autosaveIntervalSecs = 5;
7457 disableSigningAndVerification =
false;
7462 static void to_json(nlohmann::json& j,
const EnginePolicyTimelines& p)
7465 TOJSON_IMPL(enabled),
7466 TOJSON_IMPL(storageRoot),
7467 TOJSON_IMPL(maxMemMb),
7468 TOJSON_IMPL(maxAudioEventMemMb),
7469 TOJSON_IMPL(maxDiskMb),
7470 TOJSON_IMPL(maxEventAgeSecs),
7471 TOJSON_IMPL(maxEvents),
7472 TOJSON_IMPL(groomingIntervalSecs),
7473 TOJSON_IMPL(autosaveIntervalSecs),
7474 TOJSON_IMPL(security),
7475 TOJSON_IMPL(disableSigningAndVerification),
7476 TOJSON_IMPL(ephemeral)
7479 static void from_json(
const nlohmann::json& j, EnginePolicyTimelines& p)
7482 getOptional<bool>(
"enabled", p.enabled, j,
true);
7483 getOptional<std::string>(
"storageRoot", p.storageRoot, j, EMPTY_STRING);
7485 getOptional<int>(
"maxStorageMb", p.maxStorageMb, j, 1024);
7486 getOptional<int>(
"maxMemMb", p.maxMemMb, j, p.maxStorageMb);
7487 getOptional<int>(
"maxAudioEventMemMb", p.maxAudioEventMemMb, j, p.maxMemMb);
7488 getOptional<int>(
"maxDiskMb", p.maxDiskMb, j, p.maxStorageMb);
7489 getOptional<long>(
"maxEventAgeSecs", p.maxEventAgeSecs, j, (86400 * 30));
7490 getOptional<long>(
"groomingIntervalSecs", p.groomingIntervalSecs, j, (60 * 30));
7491 getOptional<long>(
"autosaveIntervalSecs", p.autosaveIntervalSecs, j, 5);
7492 getOptional<int>(
"maxEvents", p.maxEvents, j, 1000);
7493 getOptional<SecurityCertificate>(
"security", p.security, j);
7494 getOptional<bool>(
"disableSigningAndVerification", p.disableSigningAndVerification, j,
false);
7495 getOptional<bool>(
"ephemeral", p.ephemeral, j,
false);
7500 JSON_SERIALIZED_CLASS(RtpMapEntry)
7512 IMPLEMENT_JSON_SERIALIZATION()
7534 rtpPayloadType = -1;
7538 static void to_json(nlohmann::json& j,
const RtpMapEntry& p)
7542 TOJSON_IMPL(engageType),
7543 TOJSON_IMPL(rtpPayloadType)
7546 static void from_json(
const nlohmann::json& j, RtpMapEntry& p)
7549 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7550 getOptional<int>(
"engageType", p.engageType, j, -1);
7551 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7555 JSON_SERIALIZED_CLASS(ExternalModule)
7567 IMPLEMENT_JSON_SERIALIZATION()
7589 configuration.clear();
7593 static void to_json(nlohmann::json& j,
const ExternalModule& p)
7600 if(!p.configuration.empty())
7602 j[
"configuration"] = p.configuration;
7605 static void from_json(
const nlohmann::json& j, ExternalModule& p)
7608 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7609 getOptional<std::string>(
"file", p.file, j, EMPTY_STRING);
7613 p.configuration = j.at(
"configuration");
7617 p.configuration.clear();
7623 JSON_SERIALIZED_CLASS(ExternalCodecDescriptor)
7635 IMPLEMENT_JSON_SERIALIZATION()
7658 rtpPayloadType = -1;
7661 rtpTsMultiplier = 0;
7665 static void to_json(nlohmann::json& j,
const ExternalCodecDescriptor& p)
7668 TOJSON_IMPL(rtpPayloadType),
7669 TOJSON_IMPL(samplingRate),
7670 TOJSON_IMPL(channels),
7671 TOJSON_IMPL(rtpTsMultiplier)
7674 static void from_json(
const nlohmann::json& j, ExternalCodecDescriptor& p)
7678 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7679 getOptional<int>(
"samplingRate", p.samplingRate, j, -1);
7680 getOptional<int>(
"channels", p.channels, j, -1);
7681 getOptional<int>(
"rtpTsMultiplier", p.rtpTsMultiplier, j, -1);
7685 JSON_SERIALIZED_CLASS(EngineStatusReportConfiguration)
7697 IMPLEMENT_JSON_SERIALIZATION()
7729 includeMemoryDetail =
false;
7730 includeTaskQueueDetail =
false;
7735 static void to_json(nlohmann::json& j,
const EngineStatusReportConfiguration& p)
7738 TOJSON_IMPL(fileName),
7739 TOJSON_IMPL(intervalSecs),
7740 TOJSON_IMPL(enabled),
7741 TOJSON_IMPL(includeMemoryDetail),
7742 TOJSON_IMPL(includeTaskQueueDetail),
7746 static void from_json(
const nlohmann::json& j, EngineStatusReportConfiguration& p)
7749 getOptional<std::string>(
"fileName", p.fileName, j);
7750 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
7751 getOptional<bool>(
"enabled", p.enabled, j,
false);
7752 getOptional<std::string>(
"runCmd", p.runCmd, j);
7753 getOptional<bool>(
"includeMemoryDetail", p.includeMemoryDetail, j,
false);
7754 getOptional<bool>(
"includeTaskQueueDetail", p.includeTaskQueueDetail, j,
false);
7758 JSON_SERIALIZED_CLASS(EnginePolicy)
7772 IMPLEMENT_JSON_SERIALIZATION()
7829 dataDirectory.clear();
7840 namedAudioDevices.clear();
7841 externalCodecs.clear();
7843 statusReport.clear();
7847 static void to_json(nlohmann::json& j,
const EnginePolicy& p)
7850 TOJSON_IMPL(dataDirectory),
7851 TOJSON_IMPL(licensing),
7852 TOJSON_IMPL(security),
7853 TOJSON_IMPL(networking),
7855 TOJSON_IMPL(discovery),
7856 TOJSON_IMPL(logging),
7857 TOJSON_IMPL(internals),
7858 TOJSON_IMPL(timelines),
7859 TOJSON_IMPL(database),
7860 TOJSON_IMPL(featureset),
7861 TOJSON_IMPL(namedAudioDevices),
7862 TOJSON_IMPL(externalCodecs),
7863 TOJSON_IMPL(rtpMap),
7864 TOJSON_IMPL(statusReport)
7867 static void from_json(
const nlohmann::json& j, EnginePolicy& p)
7870 FROMJSON_IMPL_SIMPLE(dataDirectory);
7871 FROMJSON_IMPL_SIMPLE(licensing);
7872 FROMJSON_IMPL_SIMPLE(security);
7873 FROMJSON_IMPL_SIMPLE(networking);
7874 FROMJSON_IMPL_SIMPLE(audio);
7875 FROMJSON_IMPL_SIMPLE(discovery);
7876 FROMJSON_IMPL_SIMPLE(logging);
7877 FROMJSON_IMPL_SIMPLE(internals);
7878 FROMJSON_IMPL_SIMPLE(timelines);
7879 FROMJSON_IMPL_SIMPLE(database);
7880 FROMJSON_IMPL_SIMPLE(featureset);
7881 FROMJSON_IMPL_SIMPLE(namedAudioDevices);
7882 FROMJSON_IMPL_SIMPLE(externalCodecs);
7883 FROMJSON_IMPL_SIMPLE(rtpMap);
7884 FROMJSON_IMPL_SIMPLE(statusReport);
7889 JSON_SERIALIZED_CLASS(TalkgroupAsset)
7901 IMPLEMENT_JSON_SERIALIZATION()
7924 static void to_json(nlohmann::json& j,
const TalkgroupAsset& p)
7927 TOJSON_IMPL(nodeId),
7931 static void from_json(
const nlohmann::json& j, TalkgroupAsset& p)
7934 getOptional<std::string>(
"nodeId", p.nodeId, j);
7935 getOptional<Group>(
"group", p.group, j);
7939 JSON_SERIALIZED_CLASS(EngageDiscoveredGroup)
7949 IMPLEMENT_JSON_SERIALIZATION()
7979 static void to_json(nlohmann::json& j,
const EngageDiscoveredGroup& p)
7988 static void from_json(
const nlohmann::json& j, EngageDiscoveredGroup& p)
7991 getOptional<std::string>(
"id", p.id, j);
7992 getOptional<int>(
"type", p.type, j, 0);
7993 getOptional<NetworkAddress>(
"rx", p.rx, j);
7994 getOptional<NetworkAddress>(
"tx", p.tx, j);
7998 JSON_SERIALIZED_CLASS(RallypointPeer)
8010 IMPLEMENT_JSON_SERIALIZATION()
8017 olpUseRpConfiguration = 0,
8024 } OutboundLeafPolicy_t;
8065 certificate.clear();
8066 connectionTimeoutSecs = 0;
8067 forceIsMeshLeaf =
false;
8068 outboundLeafPolicy = OutboundLeafPolicy_t::olpUseRpConfiguration;
8069 protocol = Rallypoint::RpProtocol_t::rppTlsTcp;
8071 additionalProtocols.clear();
8075 static void to_json(nlohmann::json& j,
const RallypointPeer& p)
8079 TOJSON_IMPL(enabled),
8081 TOJSON_IMPL(certificate),
8082 TOJSON_IMPL(connectionTimeoutSecs),
8083 TOJSON_IMPL(forceIsMeshLeaf),
8084 TOJSON_IMPL(outboundLeafPolicy),
8085 TOJSON_IMPL(protocol),
8087 TOJSON_IMPL(additionalProtocols)
8090 static void from_json(
const nlohmann::json& j, RallypointPeer& p)
8093 j.at(
"id").get_to(p.id);
8094 getOptional<bool>(
"enabled", p.enabled, j,
true);
8095 getOptional<NetworkAddress>(
"host", p.host, j);
8096 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8097 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
8098 getOptional<bool>(
"forceIsMeshLeaf", p.forceIsMeshLeaf, j,
false);
8099 getOptional<RallypointPeer::OutboundLeafPolicy_t>(
"outboundLeafPolicy", p.outboundLeafPolicy, j, RallypointPeer::OutboundLeafPolicy_t::olpUseRpConfiguration);
8100 getOptional<Rallypoint::RpProtocol_t>(
"protocol", p.protocol, j, Rallypoint::RpProtocol_t::rppTlsTcp);
8101 getOptional<std::string>(
"path", p.path, j);
8102 getOptional<std::string>(
"additionalProtocols", p.additionalProtocols, j);
8106 JSON_SERIALIZED_CLASS(RallypointServerLimits)
8118 IMPLEMENT_JSON_SERIALIZATION()
8176 maxMulticastReflectors = 0;
8177 maxRegisteredStreams = 0;
8179 maxRxPacketsPerSec = 0;
8180 maxTxPacketsPerSec = 0;
8181 maxRxBytesPerSec = 0;
8182 maxTxBytesPerSec = 0;
8184 maxInboundBacklog = 64;
8185 lowPriorityQueueThreshold = 64;
8186 normalPriorityQueueThreshold = 256;
8187 denyNewConnectionCpuThreshold = 75;
8188 warnAtCpuThreshold = 65;
8192 static void to_json(nlohmann::json& j,
const RallypointServerLimits& p)
8195 TOJSON_IMPL(maxClients),
8196 TOJSON_IMPL(maxPeers),
8197 TOJSON_IMPL(maxMulticastReflectors),
8198 TOJSON_IMPL(maxRegisteredStreams),
8199 TOJSON_IMPL(maxStreamPaths),
8200 TOJSON_IMPL(maxRxPacketsPerSec),
8201 TOJSON_IMPL(maxTxPacketsPerSec),
8202 TOJSON_IMPL(maxRxBytesPerSec),
8203 TOJSON_IMPL(maxTxBytesPerSec),
8204 TOJSON_IMPL(maxQOpsPerSec),
8205 TOJSON_IMPL(maxInboundBacklog),
8206 TOJSON_IMPL(lowPriorityQueueThreshold),
8207 TOJSON_IMPL(normalPriorityQueueThreshold),
8208 TOJSON_IMPL(denyNewConnectionCpuThreshold),
8209 TOJSON_IMPL(warnAtCpuThreshold)
8212 static void from_json(
const nlohmann::json& j, RallypointServerLimits& p)
8215 getOptional<uint32_t>(
"maxClients", p.maxClients, j, 0);
8216 getOptional<uint32_t>(
"maxPeers", p.maxPeers, j, 0);
8217 getOptional<uint32_t>(
"maxMulticastReflectors", p.maxMulticastReflectors, j, 0);
8218 getOptional<uint32_t>(
"maxRegisteredStreams", p.maxRegisteredStreams, j, 0);
8219 getOptional<uint32_t>(
"maxStreamPaths", p.maxStreamPaths, j, 0);
8220 getOptional<uint32_t>(
"maxRxPacketsPerSec", p.maxRxPacketsPerSec, j, 0);
8221 getOptional<uint32_t>(
"maxTxPacketsPerSec", p.maxTxPacketsPerSec, j, 0);
8222 getOptional<uint32_t>(
"maxRxBytesPerSec", p.maxRxBytesPerSec, j, 0);
8223 getOptional<uint32_t>(
"maxTxBytesPerSec", p.maxTxBytesPerSec, j, 0);
8224 getOptional<uint32_t>(
"maxQOpsPerSec", p.maxQOpsPerSec, j, 0);
8225 getOptional<uint32_t>(
"maxInboundBacklog", p.maxInboundBacklog, j, 64);
8226 getOptional<uint32_t>(
"lowPriorityQueueThreshold", p.lowPriorityQueueThreshold, j, 64);
8227 getOptional<uint32_t>(
"normalPriorityQueueThreshold", p.normalPriorityQueueThreshold, j, 256);
8228 getOptional<uint32_t>(
"denyNewConnectionCpuThreshold", p.denyNewConnectionCpuThreshold, j, 75);
8229 getOptional<uint32_t>(
"warnAtCpuThreshold", p.warnAtCpuThreshold, j, 65);
8233 JSON_SERIALIZED_CLASS(RallypointServerStatusReportConfiguration)
8245 IMPLEMENT_JSON_SERIALIZATION()
8280 includeLinks =
false;
8281 includePeerLinkDetails =
false;
8282 includeClientLinkDetails =
false;
8287 static void to_json(nlohmann::json& j,
const RallypointServerStatusReportConfiguration& p)
8290 TOJSON_IMPL(fileName),
8291 TOJSON_IMPL(intervalSecs),
8292 TOJSON_IMPL(enabled),
8293 TOJSON_IMPL(includeLinks),
8294 TOJSON_IMPL(includePeerLinkDetails),
8295 TOJSON_IMPL(includeClientLinkDetails),
8299 static void from_json(
const nlohmann::json& j, RallypointServerStatusReportConfiguration& p)
8302 getOptional<std::string>(
"fileName", p.fileName, j);
8303 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8304 getOptional<bool>(
"enabled", p.enabled, j,
false);
8305 getOptional<bool>(
"includeLinks", p.includeLinks, j,
false);
8306 getOptional<bool>(
"includePeerLinkDetails", p.includePeerLinkDetails, j,
false);
8307 getOptional<bool>(
"includeClientLinkDetails", p.includeClientLinkDetails, j,
false);
8308 getOptional<std::string>(
"runCmd", p.runCmd, j);
8312 JSON_SERIALIZED_CLASS(RallypointServerLinkGraph)
8315 IMPLEMENT_JSON_SERIALIZATION()
8358 includeDigraphEnclosure =
true;
8359 includeClients =
false;
8360 coreRpStyling =
"[shape=hexagon color=firebrick style=filled]";
8361 leafRpStyling =
"[shape=box color=gray style=filled]";
8362 clientStyling.clear();
8367 static void to_json(nlohmann::json& j,
const RallypointServerLinkGraph& p)
8370 TOJSON_IMPL(fileName),
8371 TOJSON_IMPL(minRefreshSecs),
8372 TOJSON_IMPL(enabled),
8373 TOJSON_IMPL(includeDigraphEnclosure),
8374 TOJSON_IMPL(includeClients),
8375 TOJSON_IMPL(coreRpStyling),
8376 TOJSON_IMPL(leafRpStyling),
8377 TOJSON_IMPL(clientStyling),
8381 static void from_json(
const nlohmann::json& j, RallypointServerLinkGraph& p)
8384 getOptional<std::string>(
"fileName", p.fileName, j);
8385 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8386 getOptional<bool>(
"enabled", p.enabled, j,
false);
8387 getOptional<bool>(
"includeDigraphEnclosure", p.includeDigraphEnclosure, j,
true);
8388 getOptional<bool>(
"includeClients", p.includeClients, j,
false);
8389 getOptional<std::string>(
"coreRpStyling", p.coreRpStyling, j,
"[shape=hexagon color=firebrick style=filled]");
8390 getOptional<std::string>(
"leafRpStyling", p.leafRpStyling, j,
"[shape=box color=gray style=filled]");
8391 getOptional<std::string>(
"clientStyling", p.clientStyling, j);
8392 getOptional<std::string>(
"runCmd", p.runCmd, j);
8397 JSON_SERIALIZED_CLASS(RallypointServerStreamStatsExport)
8407 IMPLEMENT_JSON_SERIALIZATION()
8450 resetCountersAfterExport =
false;
8456 static void to_json(nlohmann::json& j,
const RallypointServerStreamStatsExport& p)
8459 TOJSON_IMPL(fileName),
8460 TOJSON_IMPL(intervalSecs),
8461 TOJSON_IMPL(enabled),
8462 TOJSON_IMPL(resetCountersAfterExport),
8463 TOJSON_IMPL(runCmd),
8467 static void from_json(
const nlohmann::json& j, RallypointServerStreamStatsExport& p)
8470 getOptional<std::string>(
"fileName", p.fileName, j);
8471 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
8472 getOptional<bool>(
"enabled", p.enabled, j,
false);
8473 getOptional<bool>(
"resetCountersAfterExport", p.resetCountersAfterExport, j,
false);
8474 getOptional<std::string>(
"runCmd", p.runCmd, j);
8475 getOptional<RallypointServerStreamStatsExport::ExportFormat_t>(
"format", p.format, j, RallypointServerStreamStatsExport::ExportFormat_t::fmtCsv);
8479 JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
8482 IMPLEMENT_JSON_SERIALIZATION()
8511 static void to_json(nlohmann::json& j,
const RallypointServerRouteMap& p)
8514 TOJSON_IMPL(fileName),
8515 TOJSON_IMPL(minRefreshSecs),
8516 TOJSON_IMPL(enabled),
8520 static void from_json(
const nlohmann::json& j, RallypointServerRouteMap& p)
8523 getOptional<std::string>(
"fileName", p.fileName, j);
8524 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
8525 getOptional<bool>(
"enabled", p.enabled, j,
false);
8526 getOptional<std::string>(
"runCmd", p.runCmd, j);
8531 JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
8543 IMPLEMENT_JSON_SERIALIZATION()
8562 immediateClose =
true;
8566 static void to_json(nlohmann::json& j,
const ExternalHealthCheckResponder& p)
8569 TOJSON_IMPL(listenPort),
8570 TOJSON_IMPL(immediateClose)
8573 static void from_json(
const nlohmann::json& j, ExternalHealthCheckResponder& p)
8576 getOptional<int>(
"listenPort", p.listenPort, j, 0);
8577 getOptional<bool>(
"immediateClose", p.immediateClose, j,
true);
8582 JSON_SERIALIZED_CLASS(PeeringConfiguration)
8592 IMPLEMENT_JSON_SERIALIZATION()
8622 static void to_json(nlohmann::json& j,
const PeeringConfiguration& p)
8626 TOJSON_IMPL(version),
8627 TOJSON_IMPL(comments),
8631 static void from_json(
const nlohmann::json& j, PeeringConfiguration& p)
8634 getOptional<std::string>(
"id", p.id, j);
8635 getOptional<int>(
"version", p.version, j, 0);
8636 getOptional<std::string>(
"comments", p.comments, j);
8637 getOptional<std::vector<RallypointPeer>>(
"peers", p.peers, j);
8641 JSON_SERIALIZED_CLASS(IgmpSnooping)
8651 IMPLEMENT_JSON_SERIALIZATION()
8674 queryIntervalMs = 125000;
8675 subscriptionTimeoutMs = 0;
8679 static void to_json(nlohmann::json& j,
const IgmpSnooping& p)
8682 TOJSON_IMPL(enabled),
8683 TOJSON_IMPL(queryIntervalMs),
8684 TOJSON_IMPL(subscriptionTimeoutMs)
8687 static void from_json(
const nlohmann::json& j, IgmpSnooping& p)
8690 getOptional<bool>(
"enabled", p.enabled, j);
8691 getOptional<int>(
"queryIntervalMs", p.queryIntervalMs, j, 125000);
8692 getOptional<int>(
"subscriptionTimeoutMs", p.subscriptionTimeoutMs, j, 0);
8697 JSON_SERIALIZED_CLASS(RallypointReflector)
8706 IMPLEMENT_JSON_SERIALIZATION()
8721 } DirectionRestriction_t;
8753 multicastInterfaceName.clear();
8754 additionalTx.clear();
8755 directionRestriction = drNone;
8759 static void to_json(nlohmann::json& j,
const RallypointReflector& p)
8765 TOJSON_IMPL(multicastInterfaceName),
8766 TOJSON_IMPL(additionalTx),
8767 TOJSON_IMPL(directionRestriction)
8770 static void from_json(
const nlohmann::json& j, RallypointReflector& p)
8773 j.at(
"id").get_to(p.id);
8774 j.at(
"rx").get_to(p.rx);
8775 j.at(
"tx").get_to(p.tx);
8776 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
8777 getOptional<std::vector<NetworkAddress>>(
"additionalTx", p.additionalTx, j);
8778 getOptional<RallypointReflector::DirectionRestriction_t>(
"directionRestriction", p.directionRestriction, j, RallypointReflector::DirectionRestriction_t::drNone);
8783 JSON_SERIALIZED_CLASS(RallypointUdpStreamingIpvX)
8792 IMPLEMENT_JSON_SERIALIZATION()
8814 static void to_json(nlohmann::json& j,
const RallypointUdpStreamingIpvX& p)
8817 TOJSON_IMPL(enabled),
8818 TOJSON_IMPL(external)
8821 static void from_json(
const nlohmann::json& j, RallypointUdpStreamingIpvX& p)
8824 getOptional<bool>(
"enabled", p.enabled, j,
true);
8825 getOptional<NetworkAddress>(
"external", p.external, j);
8829 JSON_SERIALIZED_CLASS(RallypointUdpStreaming)
8838 IMPLEMENT_JSON_SERIALIZATION()
8849 ctSharedKeyAes256FullIv = 1,
8852 ctSharedKeyAes256IdxIv = 2,
8855 ctSharedKeyChaCha20FullIv = 3,
8858 ctSharedKeyChaCha20IdxIv = 4
8894 cryptoType = CryptoType_t::ctSharedKeyAes256FullIv;
8898 keepaliveIntervalSecs = 15;
8899 priority = TxPriority_t::priVoice;
8904 static void to_json(nlohmann::json& j,
const RallypointUdpStreaming& p)
8907 TOJSON_IMPL(enabled),
8908 TOJSON_IMPL(cryptoType),
8909 TOJSON_IMPL(listenPort),
8910 TOJSON_IMPL(keepaliveIntervalSecs),
8913 TOJSON_IMPL(priority),
8917 static void from_json(
const nlohmann::json& j, RallypointUdpStreaming& p)
8920 getOptional<bool>(
"enabled", p.enabled, j,
true);
8921 getOptional<RallypointUdpStreaming::CryptoType_t>(
"cryptoType", p.cryptoType, j, RallypointUdpStreaming::CryptoType_t::ctSharedKeyAes256FullIv);
8922 getOptional<int>(
"listenPort", p.listenPort, j, 7444);
8923 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
8924 getOptional<RallypointUdpStreamingIpvX>(
"ipv4", p.ipv4, j);
8925 getOptional<RallypointUdpStreamingIpvX>(
"ipv6", p.ipv6, j);
8926 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
8927 getOptional<int>(
"ttl", p.ttl, j, 64);
8931 JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
8940 IMPLEMENT_JSON_SERIALIZATION()
8985 static void to_json(nlohmann::json& j,
const RallypointRpRtTimingBehavior& p)
8988 TOJSON_IMPL(behavior),
8989 TOJSON_IMPL(atOrAboveMs),
8993 static void from_json(
const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
8996 getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>(
"behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
8997 getOptional<uint32_t>(
"atOrAboveMs", p.atOrAboveMs, j, 0);
8998 getOptional<std::string>(
"runCmd", p.runCmd, j);
9003 JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
9012 IMPLEMENT_JSON_SERIALIZATION()
9040 certificate.clear();
9041 requireClientCertificate =
false;
9046 static void to_json(nlohmann::json& j,
const RallypointWebsocketSettings& p)
9049 TOJSON_IMPL(enabled),
9050 TOJSON_IMPL(listenPort),
9051 TOJSON_IMPL(certificate),
9052 TOJSON_IMPL(requireClientCertificate),
9053 TOJSON_IMPL(requireTls)
9056 static void from_json(
const nlohmann::json& j, RallypointWebsocketSettings& p)
9059 getOptional<bool>(
"enabled", p.enabled, j,
false);
9060 getOptional<int>(
"listenPort", p.listenPort, j, 8443);
9061 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9062 getOptional<bool>(
"requireClientCertificate", p.requireClientCertificate, j,
false);
9063 getOptional<bool>(
"requireTls", p.requireTls, j,
true);
9069 JSON_SERIALIZED_CLASS(RallypointAdvertisingSettings)
9078 IMPLEMENT_JSON_SERIALIZATION()
9109 serviceName =
"_rallypoint._tcp.local.";
9110 interfaceName.clear();
9116 static void to_json(nlohmann::json& j,
const RallypointAdvertisingSettings& p)
9119 TOJSON_IMPL(enabled),
9120 TOJSON_IMPL(hostName),
9121 TOJSON_IMPL(serviceName),
9122 TOJSON_IMPL(interfaceName),
9127 static void from_json(
const nlohmann::json& j, RallypointAdvertisingSettings& p)
9130 getOptional<bool>(
"enabled", p.enabled, j,
false);
9131 getOptional<std::string>(
"hostName", p.hostName, j);
9132 getOptional<std::string>(
"serviceName", p.serviceName, j,
"_rallypoint._tcp.local.");
9133 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
9135 getOptional<int>(
"port", p.port, j, 0);
9136 getOptional<int>(
"ttl", p.ttl, j, 60);
9143 JSON_SERIALIZED_CLASS(NamedIdentity)
9152 IMPLEMENT_JSON_SERIALIZATION()
9170 certificate.clear();
9174 static void to_json(nlohmann::json& j,
const NamedIdentity& p)
9178 TOJSON_IMPL(certificate)
9181 static void from_json(
const nlohmann::json& j, NamedIdentity& p)
9184 getOptional<std::string>(
"name", p.name, j);
9185 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9189 JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
9198 IMPLEMENT_JSON_SERIALIZATION()
9216 restrictions.clear();
9220 static void to_json(nlohmann::json& j,
const RallypointExtendedGroupRestriction& p)
9224 TOJSON_IMPL(restrictions)
9227 static void from_json(
const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
9230 getOptional<std::string>(
"id", p.id, j);
9231 getOptional<std::vector<StringRestrictionList>>(
"restrictions", p.restrictions, j);
9236 JSON_SERIALIZED_CLASS(RallypointServer)
9247 IMPLEMENT_JSON_SERIALIZATION()
9255 sptCertPublicKey = 2,
9258 sptCertFingerprint = 5,
9272 } StreamIdPrivacyType_t;
9468 interfaceName.clear();
9469 certificate.clear();
9470 allowMulticastForwarding =
false;
9471 peeringConfiguration.clear();
9472 peeringConfigurationFileName.clear();
9473 peeringConfigurationFileCommand.clear();
9474 peeringConfigurationFileCheckSecs = 60;
9476 statusReport.clear();
9479 externalHealthCheckResponder.clear();
9480 allowPeerForwarding =
false;
9481 multicastInterfaceName.clear();
9484 forwardDiscoveredGroups =
false;
9485 forwardMulticastAddressing =
false;
9487 disableMessageSigning =
false;
9488 multicastRestrictions.clear();
9489 igmpSnooping.clear();
9490 staticReflectors.clear();
9491 tcpTxOptions.clear();
9492 multicastTxOptions.clear();
9493 certStoreFileName.clear();
9494 certStorePasswordHex.clear();
9495 groupRestrictions.clear();
9496 configurationCheckSignalName =
"rts.7b392d1.${id}";
9499 udpStreaming.clear();
9501 normalTaskQueueBias = 0;
9502 enableLeafReflectionReverseSubscription =
false;
9503 disableLoopDetection =
false;
9504 maxSecurityLevel = 0;
9506 streamStatsExport.clear();
9507 maxOutboundPeerConnectionIntervalDeltaSecs = 15;
9508 peerRtTestIntervalMs = 60000;
9509 peerRtBehaviors.clear();
9512 advertising.clear();
9513 extendedGroupRestrictions.clear();
9514 groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
9515 ipFamily = IpFamilyType_t::ifIp4;
9519 allowedDomains.clear();
9520 blockedDomains.clear();
9521 extraDomains.clear();
9523 additionalIdentities.clear();
9524 streamIdPrivacyType = StreamIdPrivacyType_t::sptDefault;
9528 static void to_json(nlohmann::json& j,
const RallypointServer& p)
9531 TOJSON_IMPL(fipsCrypto),
9532 TOJSON_IMPL(watchdog),
9534 TOJSON_IMPL(listenPort),
9535 TOJSON_IMPL(interfaceName),
9536 TOJSON_IMPL(certificate),
9537 TOJSON_IMPL(allowMulticastForwarding),
9539 TOJSON_IMPL(peeringConfigurationFileName),
9540 TOJSON_IMPL(peeringConfigurationFileCommand),
9541 TOJSON_IMPL(peeringConfigurationFileCheckSecs),
9542 TOJSON_IMPL(ioPools),
9543 TOJSON_IMPL(statusReport),
9544 TOJSON_IMPL(limits),
9545 TOJSON_IMPL(linkGraph),
9546 TOJSON_IMPL(externalHealthCheckResponder),
9547 TOJSON_IMPL(allowPeerForwarding),
9548 TOJSON_IMPL(multicastInterfaceName),
9550 TOJSON_IMPL(discovery),
9551 TOJSON_IMPL(forwardDiscoveredGroups),
9552 TOJSON_IMPL(forwardMulticastAddressing),
9553 TOJSON_IMPL(isMeshLeaf),
9554 TOJSON_IMPL(disableMessageSigning),
9555 TOJSON_IMPL(multicastRestrictions),
9556 TOJSON_IMPL(igmpSnooping),
9557 TOJSON_IMPL(staticReflectors),
9558 TOJSON_IMPL(tcpTxOptions),
9559 TOJSON_IMPL(multicastTxOptions),
9560 TOJSON_IMPL(certStoreFileName),
9561 TOJSON_IMPL(certStorePasswordHex),
9562 TOJSON_IMPL(groupRestrictions),
9563 TOJSON_IMPL(configurationCheckSignalName),
9564 TOJSON_IMPL(featureset),
9565 TOJSON_IMPL(licensing),
9566 TOJSON_IMPL(udpStreaming),
9567 TOJSON_IMPL(sysFlags),
9568 TOJSON_IMPL(normalTaskQueueBias),
9569 TOJSON_IMPL(enableLeafReflectionReverseSubscription),
9570 TOJSON_IMPL(disableLoopDetection),
9571 TOJSON_IMPL(maxSecurityLevel),
9572 TOJSON_IMPL(routeMap),
9573 TOJSON_IMPL(streamStatsExport),
9574 TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
9575 TOJSON_IMPL(peerRtTestIntervalMs),
9576 TOJSON_IMPL(peerRtBehaviors),
9577 TOJSON_IMPL(websocket),
9579 TOJSON_IMPL(advertising),
9580 TOJSON_IMPL(extendedGroupRestrictions),
9581 TOJSON_IMPL(groupRestrictionAccessPolicyType),
9582 TOJSON_IMPL(ipFamily),
9583 TOJSON_IMPL(rxCapture),
9584 TOJSON_IMPL(txCapture),
9585 TOJSON_IMPL(domainName),
9586 TOJSON_IMPL(allowedDomains),
9587 TOJSON_IMPL(blockedDomains),
9588 TOJSON_IMPL(extraDomains),
9589 TOJSON_IMPL(tuning),
9590 TOJSON_IMPL(additionalIdentities),
9591 TOJSON_IMPL(streamIdPrivacyType)
9594 static void from_json(
const nlohmann::json& j, RallypointServer& p)
9597 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
9598 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
9599 getOptional<std::string>(
"id", p.id, j);
9600 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
9601 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
9602 getOptional<int>(
"listenPort", p.listenPort, j, 7443);
9603 getOptional<bool>(
"allowMulticastForwarding", p.allowMulticastForwarding, j,
false);
9605 getOptional<std::string>(
"peeringConfigurationFileName", p.peeringConfigurationFileName, j);
9606 getOptional<std::string>(
"peeringConfigurationFileCommand", p.peeringConfigurationFileCommand, j);
9607 getOptional<int>(
"peeringConfigurationFileCheckSecs", p.peeringConfigurationFileCheckSecs, j, 60);
9608 getOptional<int>(
"ioPools", p.ioPools, j, -1);
9609 getOptional<RallypointServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
9610 getOptional<RallypointServerLimits>(
"limits", p.limits, j);
9611 getOptional<RallypointServerLinkGraph>(
"linkGraph", p.linkGraph, j);
9612 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
9613 getOptional<bool>(
"allowPeerForwarding", p.allowPeerForwarding, j,
false);
9614 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
9615 getOptional<Tls>(
"tls", p.tls, j);
9616 getOptional<DiscoveryConfiguration>(
"discovery", p.discovery, j);
9617 getOptional<bool>(
"forwardDiscoveredGroups", p.forwardDiscoveredGroups, j,
false);
9618 getOptional<bool>(
"forwardMulticastAddressing", p.forwardMulticastAddressing, j,
false);
9619 getOptional<bool>(
"isMeshLeaf", p.isMeshLeaf, j,
false);
9620 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
9621 getOptional<NetworkAddressRestrictionList>(
"multicastRestrictions", p.multicastRestrictions, j);
9622 getOptional<IgmpSnooping>(
"igmpSnooping", p.igmpSnooping, j);
9623 getOptional<std::vector<RallypointReflector>>(
"staticReflectors", p.staticReflectors, j);
9624 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
9625 getOptional<NetworkTxOptions>(
"multicastTxOptions", p.multicastTxOptions, j);
9626 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
9627 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
9628 getOptional<StringRestrictionList>(
"groupRestrictions", p.groupRestrictions, j);
9629 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
9630 getOptional<Licensing>(
"licensing", p.licensing, j);
9631 getOptional<Featureset>(
"featureset", p.featureset, j);
9632 getOptional<RallypointUdpStreaming>(
"udpStreaming", p.udpStreaming, j);
9633 getOptional<uint32_t>(
"sysFlags", p.sysFlags, j, 0);
9634 getOptional<uint32_t>(
"normalTaskQueueBias", p.normalTaskQueueBias, j, 0);
9635 getOptional<bool>(
"enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j,
false);
9636 getOptional<bool>(
"disableLoopDetection", p.disableLoopDetection, j,
false);
9637 getOptional<uint32_t>(
"maxSecurityLevel", p.maxSecurityLevel, j, 0);
9638 getOptional<RallypointServerRouteMap>(
"routeMap", p.routeMap, j);
9639 getOptional<RallypointServerStreamStatsExport>(
"streamStatsExport", p.streamStatsExport, j);
9640 getOptional<uint32_t>(
"maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
9641 getOptional<int>(
"peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
9642 getOptional<std::vector<RallypointRpRtTimingBehavior>>(
"peerRtBehaviors", p.peerRtBehaviors, j);
9643 getOptional<RallypointWebsocketSettings>(
"websocket", p.websocket, j);
9644 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
9645 getOptional<RallypointAdvertisingSettings>(
"advertising", p.advertising, j);
9646 getOptional<std::vector<RallypointExtendedGroupRestriction>>(
"extendedGroupRestrictions", p.extendedGroupRestrictions, j);
9647 getOptional<GroupRestrictionAccessPolicyType_t>(
"groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
9648 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIp4);
9649 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
9650 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
9651 getOptional<std::string>(
"domainName", p.domainName, j);
9652 getOptional<std::vector<std::string>>(
"allowedDomains", p.allowedDomains, j);
9653 getOptional<std::vector<std::string>>(
"blockedDomains", p.blockedDomains, j);
9654 getOptional<std::vector<std::string>>(
"extraDomains", p.extraDomains, j);
9655 getOptional<TuningSettings>(
"tuning", p.tuning, j);
9656 getOptional<std::vector<NamedIdentity>>(
"additionalIdentities", p.additionalIdentities, j);
9657 getOptional<RallypointServer::StreamIdPrivacyType_t>(
"streamIdPrivacyType", p.streamIdPrivacyType, j, RallypointServer::StreamIdPrivacyType_t::sptDefault);
9661 JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
9673 IMPLEMENT_JSON_SERIALIZATION()
9708 configurationVersion = 0;
9712 static void to_json(nlohmann::json& j,
const PlatformDiscoveredService& p)
9718 TOJSON_IMPL(address),
9720 TOJSON_IMPL(configurationVersion)
9723 static void from_json(
const nlohmann::json& j, PlatformDiscoveredService& p)
9726 getOptional<std::string>(
"id", p.id, j);
9727 getOptional<std::string>(
"type", p.type, j);
9728 getOptional<std::string>(
"name", p.name, j);
9729 getOptional<NetworkAddress>(
"address", p.address, j);
9730 getOptional<std::string>(
"uri", p.uri, j);
9731 getOptional<uint32_t>(
"configurationVersion", p.configurationVersion, j, 0);
9771 IMPLEMENT_JSON_SERIALIZATION()
9817 mostRecentFirst =
true;
9818 startedOnOrAfter = 0;
9819 endedOnOrBefore = 0;
9822 onlyCommitted =
true;
9830 static void to_json(nlohmann::json& j,
const TimelineQueryParameters& p)
9833 TOJSON_IMPL(maxCount),
9834 TOJSON_IMPL(mostRecentFirst),
9835 TOJSON_IMPL(startedOnOrAfter),
9836 TOJSON_IMPL(endedOnOrBefore),
9837 TOJSON_IMPL(onlyDirection),
9838 TOJSON_IMPL(onlyType),
9839 TOJSON_IMPL(onlyCommitted),
9840 TOJSON_IMPL(onlyAlias),
9841 TOJSON_IMPL(onlyNodeId),
9842 TOJSON_IMPL(onlyTxId),
9846 static void from_json(
const nlohmann::json& j, TimelineQueryParameters& p)
9849 getOptional<long>(
"maxCount", p.maxCount, j, 50);
9850 getOptional<bool>(
"mostRecentFirst", p.mostRecentFirst, j,
false);
9851 getOptional<uint64_t>(
"startedOnOrAfter", p.startedOnOrAfter, j, 0);
9852 getOptional<uint64_t>(
"endedOnOrBefore", p.endedOnOrBefore, j, 0);
9853 getOptional<int>(
"onlyDirection", p.onlyDirection, j, 0);
9854 getOptional<int>(
"onlyType", p.onlyType, j, 0);
9855 getOptional<bool>(
"onlyCommitted", p.onlyCommitted, j,
true);
9856 getOptional<std::string>(
"onlyAlias", p.onlyAlias, j, EMPTY_STRING);
9857 getOptional<std::string>(
"onlyNodeId", p.onlyNodeId, j, EMPTY_STRING);
9858 getOptional<int>(
"onlyTxId", p.onlyTxId, j, 0);
9859 getOptional<std::string>(
"sql", p.sql, j, EMPTY_STRING);
9863 JSON_SERIALIZED_CLASS(CertStoreCertificate)
9872 IMPLEMENT_JSON_SERIALIZATION()
9899 certificatePem.clear();
9900 privateKeyPem.clear();
9901 internalData =
nullptr;
9906 static void to_json(nlohmann::json& j,
const CertStoreCertificate& p)
9910 TOJSON_IMPL(certificatePem),
9911 TOJSON_IMPL(privateKeyPem),
9915 static void from_json(
const nlohmann::json& j, CertStoreCertificate& p)
9918 j.at(
"id").get_to(p.id);
9919 j.at(
"certificatePem").get_to(p.certificatePem);
9920 getOptional<std::string>(
"privateKeyPem", p.privateKeyPem, j, EMPTY_STRING);
9921 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
9925 JSON_SERIALIZED_CLASS(CertStore)
9934 IMPLEMENT_JSON_SERIALIZATION()
9955 certificates.clear();
9960 static void to_json(nlohmann::json& j,
const CertStore& p)
9964 TOJSON_IMPL(certificates),
9968 static void from_json(
const nlohmann::json& j, CertStore& p)
9971 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9972 getOptional<std::vector<CertStoreCertificate>>(
"certificates", p.certificates, j);
9973 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
9977 JSON_SERIALIZED_CLASS(CertStoreCertificateElement)
9986 IMPLEMENT_JSON_SERIALIZATION()
10010 hasPrivateKey =
false;
10015 static void to_json(nlohmann::json& j,
const CertStoreCertificateElement& p)
10017 j = nlohmann::json{
10019 TOJSON_IMPL(hasPrivateKey),
10023 if(!p.certificatePem.empty())
10025 j[
"certificatePem"] = p.certificatePem;
10028 static void from_json(
const nlohmann::json& j, CertStoreCertificateElement& p)
10031 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10032 getOptional<bool>(
"hasPrivateKey", p.hasPrivateKey, j,
false);
10033 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
10034 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
10038 JSON_SERIALIZED_CLASS(CertStoreDescriptor)
10047 IMPLEMENT_JSON_SERIALIZATION()
10080 certificates.clear();
10085 static void to_json(nlohmann::json& j,
const CertStoreDescriptor& p)
10087 j = nlohmann::json{
10089 TOJSON_IMPL(fileName),
10090 TOJSON_IMPL(version),
10091 TOJSON_IMPL(flags),
10092 TOJSON_IMPL(certificates),
10096 static void from_json(
const nlohmann::json& j, CertStoreDescriptor& p)
10099 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10100 getOptional<std::string>(
"fileName", p.fileName, j, EMPTY_STRING);
10101 getOptional<int>(
"version", p.version, j, 0);
10102 getOptional<int>(
"flags", p.flags, j, 0);
10103 getOptional<std::vector<CertStoreCertificateElement>>(
"certificates", p.certificates, j);
10104 getOptional<std::vector<KvPair>>(
"kvp", p.kvp, j);
10108 JSON_SERIALIZED_CLASS(CertificateSubjectElement)
10117 IMPLEMENT_JSON_SERIALIZATION()
10139 static void to_json(nlohmann::json& j,
const CertificateSubjectElement& p)
10141 j = nlohmann::json{
10146 static void from_json(
const nlohmann::json& j, CertificateSubjectElement& p)
10149 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
10150 getOptional<std::string>(
"value", p.value, j, EMPTY_STRING);
10155 JSON_SERIALIZED_CLASS(CertificateDescriptor)
10164 IMPLEMENT_JSON_SERIALIZATION()
10213 selfSigned =
false;
10218 fingerprint.clear();
10219 subjectElements.clear();
10220 issuerElements.clear();
10221 certificatePem.clear();
10222 publicKeyPem.clear();
10226 static void to_json(nlohmann::json& j,
const CertificateDescriptor& p)
10228 j = nlohmann::json{
10229 TOJSON_IMPL(subject),
10230 TOJSON_IMPL(issuer),
10231 TOJSON_IMPL(selfSigned),
10232 TOJSON_IMPL(version),
10233 TOJSON_IMPL(notBefore),
10234 TOJSON_IMPL(notAfter),
10235 TOJSON_IMPL(serial),
10236 TOJSON_IMPL(fingerprint),
10237 TOJSON_IMPL(subjectElements),
10238 TOJSON_IMPL(issuerElements),
10239 TOJSON_IMPL(certificatePem),
10240 TOJSON_IMPL(publicKeyPem)
10243 static void from_json(
const nlohmann::json& j, CertificateDescriptor& p)
10246 getOptional<std::string>(
"subject", p.subject, j, EMPTY_STRING);
10247 getOptional<std::string>(
"issuer", p.issuer, j, EMPTY_STRING);
10248 getOptional<bool>(
"selfSigned", p.selfSigned, j,
false);
10249 getOptional<int>(
"version", p.version, j, 0);
10250 getOptional<std::string>(
"notBefore", p.notBefore, j, EMPTY_STRING);
10251 getOptional<std::string>(
"notAfter", p.notAfter, j, EMPTY_STRING);
10252 getOptional<std::string>(
"serial", p.serial, j, EMPTY_STRING);
10253 getOptional<std::string>(
"fingerprint", p.fingerprint, j, EMPTY_STRING);
10254 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
10255 getOptional<std::string>(
"publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
10256 getOptional<std::vector<CertificateSubjectElement>>(
"subjectElements", p.subjectElements, j);
10257 getOptional<std::vector<CertificateSubjectElement>>(
"issuerElements", p.issuerElements, j);
10262 JSON_SERIALIZED_CLASS(RiffDescriptor)
10274 IMPLEMENT_JSON_SERIALIZATION()
10315 certDescriptor.clear();
10320 static void to_json(nlohmann::json& j,
const RiffDescriptor& p)
10322 j = nlohmann::json{
10324 TOJSON_IMPL(verified),
10325 TOJSON_IMPL(channels),
10326 TOJSON_IMPL(sampleCount),
10328 TOJSON_IMPL(certPem),
10329 TOJSON_IMPL(certDescriptor),
10330 TOJSON_IMPL(signature)
10334 static void from_json(
const nlohmann::json& j, RiffDescriptor& p)
10337 FROMJSON_IMPL(file, std::string, EMPTY_STRING);
10338 FROMJSON_IMPL(verified,
bool,
false);
10339 FROMJSON_IMPL(channels,
int, 0);
10340 FROMJSON_IMPL(sampleCount,
int, 0);
10341 FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
10342 FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
10343 getOptional<CertificateDescriptor>(
"certDescriptor", p.certDescriptor, j);
10344 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
10349 JSON_SERIALIZED_CLASS(BridgeCreationDetail)
10358 IMPLEMENT_JSON_SERIALIZATION()
10376 csAlreadyExists = -3,
10379 csInvalidConfiguration = -4,
10382 csInvalidJson = -5,
10385 csInsufficientGroups = -6,
10388 csTooManyGroups = -7,
10391 csDuplicateGroup = -8,
10394 csLocalLoopDetected = -9,
10395 } CreationStatus_t;
10411 status = csUndefined;
10415 static void to_json(nlohmann::json& j,
const BridgeCreationDetail& p)
10417 j = nlohmann::json{
10419 TOJSON_IMPL(status)
10422 static void from_json(
const nlohmann::json& j, BridgeCreationDetail& p)
10425 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10426 getOptional<BridgeCreationDetail::CreationStatus_t>(
"status", p.status, j, BridgeCreationDetail::CreationStatus_t::csUndefined);
10429 JSON_SERIALIZED_CLASS(GroupConnectionDetail)
10438 IMPLEMENT_JSON_SERIALIZATION()
10450 ctDirectDatagram = 1,
10454 } ConnectionType_t;
10479 connectionType = ctUndefined;
10481 asFailover =
false;
10486 static void to_json(nlohmann::json& j,
const GroupConnectionDetail& p)
10488 j = nlohmann::json{
10490 TOJSON_IMPL(connectionType),
10492 TOJSON_IMPL(asFailover),
10493 TOJSON_IMPL(reason)
10498 j[
"asFailover"] = p.asFailover;
10501 static void from_json(
const nlohmann::json& j, GroupConnectionDetail& p)
10504 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10505 getOptional<GroupConnectionDetail::ConnectionType_t>(
"connectionType", p.connectionType, j, GroupConnectionDetail::ConnectionType_t::ctUndefined);
10506 getOptional<std::string>(
"peer", p.peer, j, EMPTY_STRING);
10507 getOptional<bool>(
"asFailover", p.asFailover, j,
false);
10508 getOptional<std::string>(
"reason", p.reason, j, EMPTY_STRING);
10512 JSON_SERIALIZED_CLASS(GroupTxDetail)
10521 IMPLEMENT_JSON_SERIALIZATION()
10539 txsNotAnAudioGroup = -1,
10545 txsNotConnected = -3,
10548 txsAlreadyTransmitting = -4,
10551 txsInvalidParams = -5,
10554 txsPriorityTooLow = -6,
10557 txsRxActiveOnNonFdx = -7,
10560 txsCannotSubscribeToInput = -8,
10566 txsTxEndedWithFailure = -10,
10569 txsBridgedButNotMultistream = -11,
10572 txsAutoEndedDueToNonMultistreamBridge = -12,
10575 txsReBeginWithoutPriorBegin = -13
10604 status = txsUndefined;
10606 remotePriority = 0;
10607 nonFdxMsHangRemaining = 0;
10612 static void to_json(nlohmann::json& j,
const GroupTxDetail& p)
10614 j = nlohmann::json{
10616 TOJSON_IMPL(status),
10617 TOJSON_IMPL(localPriority),
10622 if(p.status == GroupTxDetail::TxStatus_t::txsPriorityTooLow)
10624 j[
"remotePriority"] = p.remotePriority;
10626 else if(p.status == GroupTxDetail::TxStatus_t::txsRxActiveOnNonFdx)
10628 j[
"nonFdxMsHangRemaining"] = p.nonFdxMsHangRemaining;
10631 static void from_json(
const nlohmann::json& j, GroupTxDetail& p)
10634 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10635 getOptional<GroupTxDetail::TxStatus_t>(
"status", p.status, j, GroupTxDetail::TxStatus_t::txsUndefined);
10636 getOptional<int>(
"localPriority", p.localPriority, j, 0);
10637 getOptional<int>(
"remotePriority", p.remotePriority, j, 0);
10638 getOptional<long>(
"nonFdxMsHangRemaining", p.nonFdxMsHangRemaining, j, 0);
10639 getOptional<uint32_t>(
"txId", p.txId, j, 0);
10643 JSON_SERIALIZED_CLASS(GroupCreationDetail)
10652 IMPLEMENT_JSON_SERIALIZATION()
10670 csConflictingRpListAndCluster = -2,
10673 csAlreadyExists = -3,
10676 csInvalidConfiguration = -4,
10679 csInvalidJson = -5,
10682 csCryptoFailure = -6,
10685 csAudioInputFailure = -7,
10688 csAudioOutputFailure = -8,
10691 csUnsupportedAudioEncoder = -9,
10697 csInvalidTransport = -11,
10700 csAudioInputDeviceNotFound = -12,
10703 csAudioOutputDeviceNotFound = -13
10704 } CreationStatus_t;
10720 status = csUndefined;
10724 static void to_json(nlohmann::json& j,
const GroupCreationDetail& p)
10726 j = nlohmann::json{
10728 TOJSON_IMPL(status)
10731 static void from_json(
const nlohmann::json& j, GroupCreationDetail& p)
10734 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10735 getOptional<GroupCreationDetail::CreationStatus_t>(
"status", p.status, j, GroupCreationDetail::CreationStatus_t::csUndefined);
10740 JSON_SERIALIZED_CLASS(GroupReconfigurationDetail)
10749 IMPLEMENT_JSON_SERIALIZATION()
10767 rsInvalidConfiguration = -2,
10770 rsInvalidJson = -3,
10773 rsAudioInputFailure = -4,
10776 rsAudioOutputFailure = -5,
10779 rsDoesNotExist = -6,
10782 rsAudioInputInUse = -7,
10785 rsAudioDisabledForGroup = -8,
10788 rsGroupIsNotAudio = -9
10789 } ReconfigurationStatus_t;
10805 status = rsUndefined;
10809 static void to_json(nlohmann::json& j,
const GroupReconfigurationDetail& p)
10811 j = nlohmann::json{
10813 TOJSON_IMPL(status)
10816 static void from_json(
const nlohmann::json& j, GroupReconfigurationDetail& p)
10819 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10820 getOptional<GroupReconfigurationDetail::ReconfigurationStatus_t>(
"status", p.status, j, GroupReconfigurationDetail::ReconfigurationStatus_t::rsUndefined);
10825 JSON_SERIALIZED_CLASS(GroupHealthReport)
10834 IMPLEMENT_JSON_SERIALIZATION()
10840 uint64_t lastErrorTs;
10841 uint64_t decryptionErrors;
10842 uint64_t encryptionErrors;
10843 uint64_t unsupportDecoderErrors;
10844 uint64_t decoderFailures;
10845 uint64_t decoderStartFailures;
10846 uint64_t inboundRtpPacketAllocationFailures;
10847 uint64_t inboundRtpPacketLoadFailures;
10848 uint64_t latePacketsDiscarded;
10849 uint64_t jitterBufferInsertionFailures;
10850 uint64_t presenceDeserializationFailures;
10851 uint64_t notRtpErrors;
10852 uint64_t generalErrors;
10853 uint64_t inboundRtpProcessorAllocationFailures;
10864 decryptionErrors = 0;
10865 encryptionErrors = 0;
10866 unsupportDecoderErrors = 0;
10867 decoderFailures = 0;
10868 decoderStartFailures = 0;
10869 inboundRtpPacketAllocationFailures = 0;
10870 inboundRtpPacketLoadFailures = 0;
10871 latePacketsDiscarded = 0;
10872 jitterBufferInsertionFailures = 0;
10873 presenceDeserializationFailures = 0;
10876 inboundRtpProcessorAllocationFailures = 0;
10882 j = nlohmann::json{
10884 TOJSON_IMPL(lastErrorTs),
10885 TOJSON_IMPL(decryptionErrors),
10886 TOJSON_IMPL(encryptionErrors),
10887 TOJSON_IMPL(unsupportDecoderErrors),
10888 TOJSON_IMPL(decoderFailures),
10889 TOJSON_IMPL(decoderStartFailures),
10890 TOJSON_IMPL(inboundRtpPacketAllocationFailures),
10891 TOJSON_IMPL(inboundRtpPacketLoadFailures),
10892 TOJSON_IMPL(latePacketsDiscarded),
10893 TOJSON_IMPL(jitterBufferInsertionFailures),
10894 TOJSON_IMPL(presenceDeserializationFailures),
10895 TOJSON_IMPL(notRtpErrors),
10896 TOJSON_IMPL(generalErrors),
10897 TOJSON_IMPL(inboundRtpProcessorAllocationFailures)
10900 static void from_json(
const nlohmann::json& j, GroupHealthReport& p)
10903 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10904 getOptional<uint64_t>(
"lastErrorTs", p.lastErrorTs, j, 0);
10905 getOptional<uint64_t>(
"decryptionErrors", p.decryptionErrors, j, 0);
10906 getOptional<uint64_t>(
"encryptionErrors", p.encryptionErrors, j, 0);
10907 getOptional<uint64_t>(
"unsupportDecoderErrors", p.unsupportDecoderErrors, j, 0);
10908 getOptional<uint64_t>(
"decoderFailures", p.decoderFailures, j, 0);
10909 getOptional<uint64_t>(
"decoderStartFailures", p.decoderStartFailures, j, 0);
10910 getOptional<uint64_t>(
"inboundRtpPacketAllocationFailures", p.inboundRtpPacketAllocationFailures, j, 0);
10911 getOptional<uint64_t>(
"inboundRtpPacketLoadFailures", p.inboundRtpPacketLoadFailures, j, 0);
10912 getOptional<uint64_t>(
"latePacketsDiscarded", p.latePacketsDiscarded, j, 0);
10913 getOptional<uint64_t>(
"jitterBufferInsertionFailures", p.jitterBufferInsertionFailures, j, 0);
10914 getOptional<uint64_t>(
"presenceDeserializationFailures", p.presenceDeserializationFailures, j, 0);
10915 getOptional<uint64_t>(
"notRtpErrors", p.notRtpErrors, j, 0);
10916 getOptional<uint64_t>(
"generalErrors", p.generalErrors, j, 0);
10917 getOptional<uint64_t>(
"inboundRtpProcessorAllocationFailures", p.inboundRtpProcessorAllocationFailures, j, 0);
10921 JSON_SERIALIZED_CLASS(InboundProcessorStats)
10930 IMPLEMENT_JSON_SERIALIZATION()
10937 uint64_t minRtpSamplesInQueue;
10938 uint64_t maxRtpSamplesInQueue;
10939 uint64_t totalSamplesTrimmed;
10940 uint64_t underruns;
10942 uint64_t samplesInQueue;
10943 uint64_t totalPacketsReceived;
10944 uint64_t totalPacketsLost;
10945 uint64_t totalPacketsDiscarded;
10956 minRtpSamplesInQueue = 0;
10957 maxRtpSamplesInQueue = 0;
10958 totalSamplesTrimmed = 0;
10961 samplesInQueue = 0;
10962 totalPacketsReceived = 0;
10963 totalPacketsLost = 0;
10964 totalPacketsDiscarded = 0;
10970 j = nlohmann::json{
10972 TOJSON_IMPL(jitter),
10973 TOJSON_IMPL(minRtpSamplesInQueue),
10974 TOJSON_IMPL(maxRtpSamplesInQueue),
10975 TOJSON_IMPL(totalSamplesTrimmed),
10976 TOJSON_IMPL(underruns),
10977 TOJSON_IMPL(overruns),
10978 TOJSON_IMPL(samplesInQueue),
10979 TOJSON_IMPL(totalPacketsReceived),
10980 TOJSON_IMPL(totalPacketsLost),
10981 TOJSON_IMPL(totalPacketsDiscarded)
10984 static void from_json(
const nlohmann::json& j, InboundProcessorStats& p)
10987 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
10988 getOptional<double>(
"jitter", p.jitter, j, 0.0);
10989 getOptional<uint64_t>(
"minRtpSamplesInQueue", p.minRtpSamplesInQueue, j, 0);
10990 getOptional<uint64_t>(
"maxRtpSamplesInQueue", p.maxRtpSamplesInQueue, j, 0);
10991 getOptional<uint64_t>(
"totalSamplesTrimmed", p.totalSamplesTrimmed, j, 0);
10992 getOptional<uint64_t>(
"underruns", p.underruns, j, 0);
10993 getOptional<uint64_t>(
"overruns", p.overruns, j, 0);
10994 getOptional<uint64_t>(
"samplesInQueue", p.samplesInQueue, j, 0);
10995 getOptional<uint64_t>(
"totalPacketsReceived", p.totalPacketsReceived, j, 0);
10996 getOptional<uint64_t>(
"totalPacketsLost", p.totalPacketsLost, j, 0);
10997 getOptional<uint64_t>(
"totalPacketsDiscarded", p.totalPacketsDiscarded, j, 0);
11001 JSON_SERIALIZED_CLASS(TrafficCounter)
11010 IMPLEMENT_JSON_SERIALIZATION()
11034 j = nlohmann::json{
11035 TOJSON_IMPL(packets),
11036 TOJSON_IMPL(bytes),
11037 TOJSON_IMPL(errors)
11040 static void from_json(
const nlohmann::json& j, TrafficCounter& p)
11043 getOptional<uint64_t>(
"packets", p.packets, j, 0);
11044 getOptional<uint64_t>(
"bytes", p.bytes, j, 0);
11045 getOptional<uint64_t>(
"errors", p.errors, j, 0);
11049 JSON_SERIALIZED_CLASS(GroupStats)
11058 IMPLEMENT_JSON_SERIALIZATION()
11059 IMPLEMENT_WRAPPED_JSON_SERIALIZATION(
GroupStats)
11082 static void to_json(nlohmann::json& j,
const GroupStats& p)
11084 j = nlohmann::json{
11087 TOJSON_IMPL(rxTraffic),
11088 TOJSON_IMPL(txTraffic)
11091 static void from_json(
const nlohmann::json& j, GroupStats& p)
11094 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
11096 getOptional<TrafficCounter>(
"rxTraffic", p.rxTraffic, j);
11097 getOptional<TrafficCounter>(
"txTraffic", p.txTraffic, j);
11101 JSON_SERIALIZED_CLASS(RallypointConnectionDetail)
11110 IMPLEMENT_JSON_SERIALIZATION()
11137 internalId.clear();
11140 msToNextConnectionAttempt = 0;
11141 serverProcessingMs = -1.0f;
11145 static void to_json(nlohmann::json& j,
const RallypointConnectionDetail& p)
11147 j = nlohmann::json{
11148 TOJSON_IMPL(internalId),
11153 if(p.msToNextConnectionAttempt > 0)
11155 j[
"msToNextConnectionAttempt"] = p.msToNextConnectionAttempt;
11158 if(p.serverProcessingMs >= 0.0)
11160 j[
"serverProcessingMs"] = p.serverProcessingMs;
11163 static void from_json(
const nlohmann::json& j, RallypointConnectionDetail& p)
11166 getOptional<std::string>(
"internalId", p.internalId, j, EMPTY_STRING);
11167 getOptional<std::string>(
"host", p.host, j, EMPTY_STRING);
11168 getOptional<int>(
"port", p.port, j, 0);
11169 getOptional<uint64_t>(
"msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
11170 getOptional<float>(
"serverProcessingMs", p.serverProcessingMs, j, -1.0);
11174 JSON_SERIALIZED_CLASS(TranslationSession)
11186 IMPLEMENT_JSON_SERIALIZATION()
11216 static void to_json(nlohmann::json& j,
const TranslationSession& p)
11218 j = nlohmann::json{
11221 TOJSON_IMPL(groups),
11222 TOJSON_IMPL(enabled)
11225 static void from_json(
const nlohmann::json& j, TranslationSession& p)
11228 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
11229 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
11230 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
11231 FROMJSON_IMPL(enabled,
bool,
true);
11235 JSON_SERIALIZED_CLASS(TranslationConfiguration)
11247 IMPLEMENT_JSON_SERIALIZATION()
11269 static void to_json(nlohmann::json& j,
const TranslationConfiguration& p)
11271 j = nlohmann::json{
11272 TOJSON_IMPL(sessions),
11273 TOJSON_IMPL(groups)
11276 static void from_json(
const nlohmann::json& j, TranslationConfiguration& p)
11279 getOptional<std::vector<TranslationSession>>(
"sessions", p.sessions, j);
11280 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11284 JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
11296 IMPLEMENT_JSON_SERIALIZATION()
11331 includeGroupDetail =
false;
11332 includeSessionDetail =
false;
11333 includeSessionGroupDetail =
false;
11338 static void to_json(nlohmann::json& j,
const LingoServerStatusReportConfiguration& p)
11340 j = nlohmann::json{
11341 TOJSON_IMPL(fileName),
11342 TOJSON_IMPL(intervalSecs),
11343 TOJSON_IMPL(enabled),
11344 TOJSON_IMPL(includeGroupDetail),
11345 TOJSON_IMPL(includeSessionDetail),
11346 TOJSON_IMPL(includeSessionGroupDetail),
11347 TOJSON_IMPL(runCmd)
11350 static void from_json(
const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
11353 getOptional<std::string>(
"fileName", p.fileName, j);
11354 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11355 getOptional<bool>(
"enabled", p.enabled, j,
false);
11356 getOptional<std::string>(
"runCmd", p.runCmd, j);
11357 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11358 getOptional<bool>(
"includeSessionDetail", p.includeSessionDetail, j,
false);
11359 getOptional<bool>(
"includeSessionGroupDetail", p.includeSessionGroupDetail, j,
false);
11363 JSON_SERIALIZED_CLASS(LingoServerInternals)
11377 IMPLEMENT_JSON_SERIALIZATION()
11399 housekeeperIntervalMs = 1000;
11403 static void to_json(nlohmann::json& j,
const LingoServerInternals& p)
11405 j = nlohmann::json{
11406 TOJSON_IMPL(watchdog),
11407 TOJSON_IMPL(housekeeperIntervalMs),
11408 TOJSON_IMPL(tuning)
11411 static void from_json(
const nlohmann::json& j, LingoServerInternals& p)
11414 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11415 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11416 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11420 JSON_SERIALIZED_CLASS(LingoServerConfiguration)
11431 IMPLEMENT_JSON_SERIALIZATION()
11488 serviceConfigurationFileCheckSecs = 60;
11489 lingoConfigurationFileName.clear();
11490 lingoConfigurationFileCommand.clear();
11491 lingoConfigurationFileCheckSecs = 60;
11492 statusReport.clear();
11493 externalHealthCheckResponder.clear();
11495 certStoreFileName.clear();
11496 certStorePasswordHex.clear();
11497 enginePolicy.clear();
11498 configurationCheckSignalName =
"rts.22f4ec3.${id}";
11499 fipsCrypto.clear();
11505 static void to_json(nlohmann::json& j,
const LingoServerConfiguration& p)
11507 j = nlohmann::json{
11509 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11510 TOJSON_IMPL(lingoConfigurationFileName),
11511 TOJSON_IMPL(lingoConfigurationFileCommand),
11512 TOJSON_IMPL(lingoConfigurationFileCheckSecs),
11513 TOJSON_IMPL(statusReport),
11514 TOJSON_IMPL(externalHealthCheckResponder),
11515 TOJSON_IMPL(internals),
11516 TOJSON_IMPL(certStoreFileName),
11517 TOJSON_IMPL(certStorePasswordHex),
11518 TOJSON_IMPL(enginePolicy),
11519 TOJSON_IMPL(configurationCheckSignalName),
11520 TOJSON_IMPL(fipsCrypto),
11521 TOJSON_IMPL(proxy),
11525 static void from_json(
const nlohmann::json& j, LingoServerConfiguration& p)
11528 getOptional<std::string>(
"id", p.id, j);
11529 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11530 getOptional<std::string>(
"lingoConfigurationFileName", p.lingoConfigurationFileName, j);
11531 getOptional<std::string>(
"lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
11532 getOptional<int>(
"lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
11533 getOptional<LingoServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11534 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11535 getOptional<LingoServerInternals>(
"internals", p.internals, j);
11536 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11537 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11538 j.at(
"enginePolicy").get_to(p.enginePolicy);
11539 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.22f4ec3.${id}");
11540 getOptional<FipsCryptoSettings>(
"fipsCrypo", p.fipsCrypto, j);
11541 getOptional<NetworkAddress>(
"proxy", p.proxy, j);
11542 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11547 JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
11559 IMPLEMENT_JSON_SERIALIZATION()
11589 static void to_json(nlohmann::json& j,
const VoiceToVoiceSession& p)
11591 j = nlohmann::json{
11594 TOJSON_IMPL(groups),
11595 TOJSON_IMPL(enabled)
11598 static void from_json(
const nlohmann::json& j, VoiceToVoiceSession& p)
11601 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
11602 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
11603 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
11604 FROMJSON_IMPL(enabled,
bool,
true);
11608 JSON_SERIALIZED_CLASS(LingoConfiguration)
11620 IMPLEMENT_JSON_SERIALIZATION()
11637 voiceToVoiceSessions.clear();
11642 static void to_json(nlohmann::json& j,
const LingoConfiguration& p)
11644 j = nlohmann::json{
11645 TOJSON_IMPL(voiceToVoiceSessions),
11646 TOJSON_IMPL(groups)
11649 static void from_json(
const nlohmann::json& j, LingoConfiguration& p)
11652 getOptional<std::vector<VoiceToVoiceSession>>(
"voiceToVoiceSessions", p.voiceToVoiceSessions, j);
11653 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11657 JSON_SERIALIZED_CLASS(BridgingConfiguration)
11669 IMPLEMENT_JSON_SERIALIZATION()
11691 static void to_json(nlohmann::json& j,
const BridgingConfiguration& p)
11693 j = nlohmann::json{
11694 TOJSON_IMPL(bridges),
11695 TOJSON_IMPL(groups)
11698 static void from_json(
const nlohmann::json& j, BridgingConfiguration& p)
11701 getOptional<std::vector<Bridge>>(
"bridges", p.bridges, j);
11702 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11706 JSON_SERIALIZED_CLASS(BridgingServerStatusReportConfiguration)
11718 IMPLEMENT_JSON_SERIALIZATION()
11753 includeGroupDetail =
false;
11754 includeBridgeDetail =
false;
11755 includeBridgeGroupDetail =
false;
11760 static void to_json(nlohmann::json& j,
const BridgingServerStatusReportConfiguration& p)
11762 j = nlohmann::json{
11763 TOJSON_IMPL(fileName),
11764 TOJSON_IMPL(intervalSecs),
11765 TOJSON_IMPL(enabled),
11766 TOJSON_IMPL(includeGroupDetail),
11767 TOJSON_IMPL(includeBridgeDetail),
11768 TOJSON_IMPL(includeBridgeGroupDetail),
11769 TOJSON_IMPL(runCmd)
11772 static void from_json(
const nlohmann::json& j, BridgingServerStatusReportConfiguration& p)
11775 getOptional<std::string>(
"fileName", p.fileName, j);
11776 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11777 getOptional<bool>(
"enabled", p.enabled, j,
false);
11778 getOptional<std::string>(
"runCmd", p.runCmd, j);
11779 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11780 getOptional<bool>(
"includeBridgeDetail", p.includeBridgeDetail, j,
false);
11781 getOptional<bool>(
"includeBridgeGroupDetail", p.includeBridgeGroupDetail, j,
false);
11785 JSON_SERIALIZED_CLASS(BridgingServerInternals)
11799 IMPLEMENT_JSON_SERIALIZATION()
11821 housekeeperIntervalMs = 1000;
11825 static void to_json(nlohmann::json& j,
const BridgingServerInternals& p)
11827 j = nlohmann::json{
11828 TOJSON_IMPL(watchdog),
11829 TOJSON_IMPL(housekeeperIntervalMs),
11830 TOJSON_IMPL(tuning)
11833 static void from_json(
const nlohmann::json& j, BridgingServerInternals& p)
11836 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11837 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11838 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11842 JSON_SERIALIZED_CLASS(BridgingServerConfiguration)
11853 IMPLEMENT_JSON_SERIALIZATION()
11877 omADictatedByGroup = 3,
11934 serviceConfigurationFileCheckSecs = 60;
11935 bridgingConfigurationFileName.clear();
11936 bridgingConfigurationFileCommand.clear();
11937 bridgingConfigurationFileCheckSecs = 60;
11938 statusReport.clear();
11939 externalHealthCheckResponder.clear();
11941 certStoreFileName.clear();
11942 certStorePasswordHex.clear();
11943 enginePolicy.clear();
11944 configurationCheckSignalName =
"rts.6cc0651.${id}";
11945 fipsCrypto.clear();
11950 static void to_json(nlohmann::json& j,
const BridgingServerConfiguration& p)
11952 j = nlohmann::json{
11955 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11956 TOJSON_IMPL(bridgingConfigurationFileName),
11957 TOJSON_IMPL(bridgingConfigurationFileCommand),
11958 TOJSON_IMPL(bridgingConfigurationFileCheckSecs),
11959 TOJSON_IMPL(statusReport),
11960 TOJSON_IMPL(externalHealthCheckResponder),
11961 TOJSON_IMPL(internals),
11962 TOJSON_IMPL(certStoreFileName),
11963 TOJSON_IMPL(certStorePasswordHex),
11964 TOJSON_IMPL(enginePolicy),
11965 TOJSON_IMPL(configurationCheckSignalName),
11966 TOJSON_IMPL(fipsCrypto),
11970 static void from_json(
const nlohmann::json& j, BridgingServerConfiguration& p)
11973 getOptional<std::string>(
"id", p.id, j);
11974 getOptional<BridgingServerConfiguration::OpMode_t>(
"mode", p.mode, j, BridgingServerConfiguration::OpMode_t::omRaw);
11975 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11976 getOptional<std::string>(
"bridgingConfigurationFileName", p.bridgingConfigurationFileName, j);
11977 getOptional<std::string>(
"bridgingConfigurationFileCommand", p.bridgingConfigurationFileCommand, j);
11978 getOptional<int>(
"bridgingConfigurationFileCheckSecs", p.bridgingConfigurationFileCheckSecs, j, 60);
11979 getOptional<BridgingServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11980 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11981 getOptional<BridgingServerInternals>(
"internals", p.internals, j);
11982 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11983 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11984 j.at(
"enginePolicy").get_to(p.enginePolicy);
11985 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.6cc0651.${id}");
11986 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11987 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11992 JSON_SERIALIZED_CLASS(EarGroupsConfiguration)
12004 IMPLEMENT_JSON_SERIALIZATION()
12022 static void to_json(nlohmann::json& j,
const EarGroupsConfiguration& p)
12024 j = nlohmann::json{
12025 TOJSON_IMPL(groups)
12028 static void from_json(
const nlohmann::json& j, EarGroupsConfiguration& p)
12031 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12035 JSON_SERIALIZED_CLASS(EarServerStatusReportConfiguration)
12047 IMPLEMENT_JSON_SERIALIZATION()
12076 includeGroupDetail =
false;
12081 static void to_json(nlohmann::json& j,
const EarServerStatusReportConfiguration& p)
12083 j = nlohmann::json{
12084 TOJSON_IMPL(fileName),
12085 TOJSON_IMPL(intervalSecs),
12086 TOJSON_IMPL(enabled),
12087 TOJSON_IMPL(includeGroupDetail),
12088 TOJSON_IMPL(runCmd)
12091 static void from_json(
const nlohmann::json& j, EarServerStatusReportConfiguration& p)
12094 getOptional<std::string>(
"fileName", p.fileName, j);
12095 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12096 getOptional<bool>(
"enabled", p.enabled, j,
false);
12097 getOptional<std::string>(
"runCmd", p.runCmd, j);
12098 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12102 JSON_SERIALIZED_CLASS(EarServerInternals)
12116 IMPLEMENT_JSON_SERIALIZATION()
12138 housekeeperIntervalMs = 1000;
12142 static void to_json(nlohmann::json& j,
const EarServerInternals& p)
12144 j = nlohmann::json{
12145 TOJSON_IMPL(watchdog),
12146 TOJSON_IMPL(housekeeperIntervalMs),
12147 TOJSON_IMPL(tuning)
12150 static void from_json(
const nlohmann::json& j, EarServerInternals& p)
12153 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12154 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12155 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12159 JSON_SERIALIZED_CLASS(EarServerConfiguration)
12170 IMPLEMENT_JSON_SERIALIZATION()
12225 serviceConfigurationFileCheckSecs = 60;
12226 groupsConfigurationFileName.clear();
12227 groupsConfigurationFileCommand.clear();
12228 groupsConfigurationFileCheckSecs = 60;
12229 statusReport.clear();
12230 externalHealthCheckResponder.clear();
12232 certStoreFileName.clear();
12233 certStorePasswordHex.clear();
12234 enginePolicy.clear();
12235 configurationCheckSignalName =
"rts.9a164fa.${id}";
12236 fipsCrypto.clear();
12241 static void to_json(nlohmann::json& j,
const EarServerConfiguration& p)
12243 j = nlohmann::json{
12245 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12246 TOJSON_IMPL(groupsConfigurationFileName),
12247 TOJSON_IMPL(groupsConfigurationFileCommand),
12248 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
12249 TOJSON_IMPL(statusReport),
12250 TOJSON_IMPL(externalHealthCheckResponder),
12251 TOJSON_IMPL(internals),
12252 TOJSON_IMPL(certStoreFileName),
12253 TOJSON_IMPL(certStorePasswordHex),
12254 TOJSON_IMPL(enginePolicy),
12255 TOJSON_IMPL(configurationCheckSignalName),
12256 TOJSON_IMPL(fipsCrypto),
12260 static void from_json(
const nlohmann::json& j, EarServerConfiguration& p)
12263 getOptional<std::string>(
"id", p.id, j);
12264 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12265 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
12266 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
12267 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
12268 getOptional<EarServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12269 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12270 getOptional<EarServerInternals>(
"internals", p.internals, j);
12271 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12272 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12273 j.at(
"enginePolicy").get_to(p.enginePolicy);
12274 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
12275 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12276 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
12280 JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
12292 IMPLEMENT_JSON_SERIALIZATION()
12310 static void to_json(nlohmann::json& j,
const EngageSemGroupsConfiguration& p)
12312 j = nlohmann::json{
12313 TOJSON_IMPL(groups)
12316 static void from_json(
const nlohmann::json& j, EngageSemGroupsConfiguration& p)
12319 getOptional<std::vector<Group>>(
"groups", p.groups, j);
12323 JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
12335 IMPLEMENT_JSON_SERIALIZATION()
12364 includeGroupDetail =
false;
12369 static void to_json(nlohmann::json& j,
const EngageSemServerStatusReportConfiguration& p)
12371 j = nlohmann::json{
12372 TOJSON_IMPL(fileName),
12373 TOJSON_IMPL(intervalSecs),
12374 TOJSON_IMPL(enabled),
12375 TOJSON_IMPL(includeGroupDetail),
12376 TOJSON_IMPL(runCmd)
12379 static void from_json(
const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
12382 getOptional<std::string>(
"fileName", p.fileName, j);
12383 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12384 getOptional<bool>(
"enabled", p.enabled, j,
false);
12385 getOptional<std::string>(
"runCmd", p.runCmd, j);
12386 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12390 JSON_SERIALIZED_CLASS(EngageSemServerInternals)
12404 IMPLEMENT_JSON_SERIALIZATION()
12426 housekeeperIntervalMs = 1000;
12430 static void to_json(nlohmann::json& j,
const EngageSemServerInternals& p)
12432 j = nlohmann::json{
12433 TOJSON_IMPL(watchdog),
12434 TOJSON_IMPL(housekeeperIntervalMs),
12435 TOJSON_IMPL(tuning)
12438 static void from_json(
const nlohmann::json& j, EngageSemServerInternals& p)
12441 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12442 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12443 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12447 JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
12458 IMPLEMENT_JSON_SERIALIZATION()
12519 serviceConfigurationFileCheckSecs = 60;
12520 groupsConfigurationFileName.clear();
12521 groupsConfigurationFileCommand.clear();
12522 groupsConfigurationFileCheckSecs = 60;
12523 statusReport.clear();
12524 externalHealthCheckResponder.clear();
12526 certStoreFileName.clear();
12527 certStorePasswordHex.clear();
12528 enginePolicy.clear();
12529 configurationCheckSignalName =
"rts.9a164fa.${id}";
12530 fipsCrypto.clear();
12535 maxQueuingMs = 15000;
12541 static void to_json(nlohmann::json& j,
const EngageSemServerConfiguration& p)
12543 j = nlohmann::json{
12545 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12546 TOJSON_IMPL(groupsConfigurationFileName),
12547 TOJSON_IMPL(groupsConfigurationFileCommand),
12548 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
12549 TOJSON_IMPL(statusReport),
12550 TOJSON_IMPL(externalHealthCheckResponder),
12551 TOJSON_IMPL(internals),
12552 TOJSON_IMPL(certStoreFileName),
12553 TOJSON_IMPL(certStorePasswordHex),
12554 TOJSON_IMPL(enginePolicy),
12555 TOJSON_IMPL(configurationCheckSignalName),
12556 TOJSON_IMPL(fipsCrypto),
12558 TOJSON_IMPL(maxQueueLen),
12559 TOJSON_IMPL(minQueuingMs),
12560 TOJSON_IMPL(maxQueuingMs),
12561 TOJSON_IMPL(minPriority),
12562 TOJSON_IMPL(maxPriority)
12565 static void from_json(
const nlohmann::json& j, EngageSemServerConfiguration& p)
12568 getOptional<std::string>(
"id", p.id, j);
12569 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12570 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
12571 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
12572 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
12573 getOptional<EngageSemServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12574 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12575 getOptional<EngageSemServerInternals>(
"internals", p.internals, j);
12576 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12577 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12578 j.at(
"enginePolicy").get_to(p.enginePolicy);
12579 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
12580 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12581 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
12582 getOptional<int>(
"maxQueueLen", p.maxQueueLen, j, 64);
12583 getOptional<int>(
"minQueuingMs", p.minQueuingMs, j, 0);
12584 getOptional<int>(
"maxQueuingMs", p.maxQueuingMs, j, 15000);
12585 getOptional<int>(
"minPriority", p.minPriority, j, 0);
12586 getOptional<int>(
"maxPriority", p.maxPriority, j, 255);
12590 JSON_SERIALIZED_CLASS(EngateGroup)
12602 IMPLEMENT_JSON_SERIALIZATION()
12607 uint32_t inputHangMs;
12608 uint32_t inputActivationPowerThreshold;
12609 uint32_t inputDeactivationPowerThreshold;
12621 inputActivationPowerThreshold = 700;
12622 inputDeactivationPowerThreshold = 125;
12626 static void to_json(nlohmann::json& j,
const EngateGroup& p)
12629 to_json(g,
static_cast<const Group&
>(p));
12631 j = nlohmann::json{
12632 TOJSON_IMPL(useVad),
12633 TOJSON_IMPL(inputHangMs),
12634 TOJSON_IMPL(inputActivationPowerThreshold),
12635 TOJSON_IMPL(inputDeactivationPowerThreshold)
12638 static void from_json(
const nlohmann::json& j, EngateGroup& p)
12641 from_json(j,
static_cast<Group&
>(p));
12642 getOptional<uint32_t>(
"inputHangMs", p.inputHangMs, j, 750);
12643 getOptional<uint32_t>(
"inputActivationPowerThreshold", p.inputActivationPowerThreshold, j, 700);
12644 getOptional<uint32_t>(
"inputDeactivationPowerThreshold", p.inputDeactivationPowerThreshold, j, 125);
12648 JSON_SERIALIZED_CLASS(EngateGroupsConfiguration)
12660 IMPLEMENT_JSON_SERIALIZATION()
12678 static void to_json(nlohmann::json& j,
const EngateGroupsConfiguration& p)
12680 j = nlohmann::json{
12681 TOJSON_IMPL(groups)
12684 static void from_json(
const nlohmann::json& j, EngateGroupsConfiguration& p)
12687 getOptional<std::vector<EngateGroup>>(
"groups", p.groups, j);
12691 JSON_SERIALIZED_CLASS(EngateServerStatusReportConfiguration)
12703 IMPLEMENT_JSON_SERIALIZATION()
12732 includeGroupDetail =
false;
12737 static void to_json(nlohmann::json& j,
const EngateServerStatusReportConfiguration& p)
12739 j = nlohmann::json{
12740 TOJSON_IMPL(fileName),
12741 TOJSON_IMPL(intervalSecs),
12742 TOJSON_IMPL(enabled),
12743 TOJSON_IMPL(includeGroupDetail),
12744 TOJSON_IMPL(runCmd)
12747 static void from_json(
const nlohmann::json& j, EngateServerStatusReportConfiguration& p)
12750 getOptional<std::string>(
"fileName", p.fileName, j);
12751 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
12752 getOptional<bool>(
"enabled", p.enabled, j,
false);
12753 getOptional<std::string>(
"runCmd", p.runCmd, j);
12754 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
12758 JSON_SERIALIZED_CLASS(EngateServerInternals)
12772 IMPLEMENT_JSON_SERIALIZATION()
12794 housekeeperIntervalMs = 1000;
12798 static void to_json(nlohmann::json& j,
const EngateServerInternals& p)
12800 j = nlohmann::json{
12801 TOJSON_IMPL(watchdog),
12802 TOJSON_IMPL(housekeeperIntervalMs),
12803 TOJSON_IMPL(tuning)
12806 static void from_json(
const nlohmann::json& j, EngateServerInternals& p)
12809 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
12810 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
12811 getOptional<TuningSettings>(
"tuning", p.tuning, j);
12815 JSON_SERIALIZED_CLASS(EngateServerConfiguration)
12826 IMPLEMENT_JSON_SERIALIZATION()
12881 serviceConfigurationFileCheckSecs = 60;
12882 groupsConfigurationFileName.clear();
12883 groupsConfigurationFileCommand.clear();
12884 groupsConfigurationFileCheckSecs = 60;
12885 statusReport.clear();
12886 externalHealthCheckResponder.clear();
12888 certStoreFileName.clear();
12889 certStorePasswordHex.clear();
12890 enginePolicy.clear();
12891 configurationCheckSignalName =
"rts.9a164fa.${id}";
12892 fipsCrypto.clear();
12897 static void to_json(nlohmann::json& j,
const EngateServerConfiguration& p)
12899 j = nlohmann::json{
12901 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
12902 TOJSON_IMPL(groupsConfigurationFileName),
12903 TOJSON_IMPL(groupsConfigurationFileCommand),
12904 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
12905 TOJSON_IMPL(statusReport),
12906 TOJSON_IMPL(externalHealthCheckResponder),
12907 TOJSON_IMPL(internals),
12908 TOJSON_IMPL(certStoreFileName),
12909 TOJSON_IMPL(certStorePasswordHex),
12910 TOJSON_IMPL(enginePolicy),
12911 TOJSON_IMPL(configurationCheckSignalName),
12912 TOJSON_IMPL(fipsCrypto),
12916 static void from_json(
const nlohmann::json& j, EngateServerConfiguration& p)
12919 getOptional<std::string>(
"id", p.id, j);
12920 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
12921 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
12922 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
12923 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
12924 getOptional<EngateServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
12925 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
12926 getOptional<EngateServerInternals>(
"internals", p.internals, j);
12927 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
12928 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
12929 j.at(
"enginePolicy").get_to(p.enginePolicy);
12930 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
12931 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
12932 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
12936 static inline void dumpExampleConfigurations(
const char *path)
12938 WatchdogSettings::document();
12939 FileRecordingRequest::document();
12940 Feature::document();
12941 Featureset::document();
12943 RtpPayloadTypeTranslation::document();
12944 NetworkInterfaceDevice::document();
12945 ListOfNetworkInterfaceDevice::document();
12946 RtpHeader::document();
12947 BlobInfo::document();
12948 TxAudioUri::document();
12949 AdvancedTxParams::document();
12950 Identity::document();
12951 Location::document();
12953 Connectivity::document();
12954 PresenceDescriptorGroupItem::document();
12955 PresenceDescriptor::document();
12956 NetworkTxOptions::document();
12957 TcpNetworkTxOptions::document();
12958 NetworkAddress::document();
12959 NetworkAddressRxTx::document();
12960 NetworkAddressRestrictionList::document();
12961 StringRestrictionList::document();
12962 Rallypoint::document();
12963 RallypointCluster::document();
12964 NetworkDeviceDescriptor::document();
12965 TxAudio::document();
12966 AudioDeviceDescriptor::document();
12967 ListOfAudioDeviceDescriptor::document();
12969 TalkerInformation::document();
12970 GroupTalkers::document();
12971 Presence::document();
12972 Advertising::document();
12973 GroupPriorityTranslation::document();
12974 GroupTimeline::document();
12975 GroupAppTransport::document();
12976 RtpProfile::document();
12978 Mission::document();
12979 LicenseDescriptor::document();
12980 EngineNetworkingRpUdpStreaming::document();
12981 EnginePolicyNetworking::document();
12984 Bridge::document();
12985 AndroidAudio::document();
12986 EnginePolicyAudio::document();
12987 SecurityCertificate::document();
12988 EnginePolicySecurity::document();
12989 EnginePolicyLogging::document();
12990 EnginePolicyDatabase::document();
12991 NamedAudioDevice::document();
12992 EnginePolicyNamedAudioDevices::document();
12993 Licensing::document();
12994 DiscoveryMagellan::document();
12995 DiscoverySsdp::document();
12996 DiscoverySap::document();
12997 DiscoveryCistech::document();
12998 DiscoveryTrellisware::document();
12999 DiscoveryConfiguration::document();
13000 EnginePolicyInternals::document();
13001 EnginePolicyTimelines::document();
13002 RtpMapEntry::document();
13003 ExternalModule::document();
13004 ExternalCodecDescriptor::document();
13005 EnginePolicy::document();
13006 TalkgroupAsset::document();
13007 EngageDiscoveredGroup::document();
13008 RallypointPeer::document();
13009 RallypointServerLimits::document();
13010 RallypointServerStatusReportConfiguration::document();
13011 RallypointServerLinkGraph::document();
13012 ExternalHealthCheckResponder::document();
13014 PeeringConfiguration::document();
13015 IgmpSnooping::document();
13016 RallypointReflector::document();
13017 RallypointUdpStreaming::document();
13018 RallypointServer::document();
13019 PlatformDiscoveredService::document();
13020 TimelineQueryParameters::document();
13021 CertStoreCertificate::document();
13022 CertStore::document();
13023 CertStoreCertificateElement::document();
13024 CertStoreDescriptor::document();
13025 CertificateDescriptor::document();
13026 BridgeCreationDetail::document();
13027 GroupConnectionDetail::document();
13028 GroupTxDetail::document();
13029 GroupCreationDetail::document();
13030 GroupReconfigurationDetail::document();
13031 GroupHealthReport::document();
13032 InboundProcessorStats::document();
13033 TrafficCounter::document();
13034 GroupStats::document();
13035 RallypointConnectionDetail::document();
13036 BridgingConfiguration::document();
13037 BridgingServerStatusReportConfiguration::document();
13038 BridgingServerInternals::document();
13039 BridgingServerConfiguration::document();
13040 EarGroupsConfiguration::document();
13041 EarServerStatusReportConfiguration::document();
13042 EarServerInternals::document();
13043 EarServerConfiguration::document();
13044 RangerPackets::document();
13045 TransportImpairment::document();
13047 EngageSemGroupsConfiguration::document();
13048 EngageSemServerStatusReportConfiguration::document();
13049 EngageSemServerInternals::document();
13050 EngageSemServerConfiguration::document();
13055 #pragma GCC diagnostic pop
TxPriority_t
Network Transmission Priority.
@ priBestEffort
best effort
AddressResolutionPolicy_t
Address family resolution policy.
@ arpIpv6ThenIpv4
IPv6 then IPv4.
@ arpIpv4ThenIpv6
IPv4 then IPv6.
#define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING
RestrictionElementType_t
Enum describing restriction element types.
@ retGenericAccessTagPattern
Elements are generic access tags regex patterns.
@ retGroupIdPattern
Elements are group ID regex patterns.
@ retGroupId
A literal group ID.
@ retCertificateIssuerPattern
Elements are X.509 certificate issuer regex patterns.
@ retCertificateSubjectPattern
Elements are X.509 certificate subject regex patterns.
@ retCertificateFingerprintPattern
Elements are X.509 certificate fingerprint regex patterns.
@ retCertificateSerialNumberPattern
Elements are X.509 certificate serial number regex patterns.
GroupRestrictionAccessPolicyType_t
Enum describing restriction types.
@ graptStrict
Registration for groups is NOT allowed by default - requires definitive access through something like...
@ graptPermissive
Registration for groups is allowed by default.
RestrictionType_t
Enum describing restriction types.
@ rtWhitelist
Elements are whitelisted.
@ rtBlacklist
Elements are blacklisted.
Configuration when using the engageBeginGroupTxAdvanced API.
TxAudioUri audioUri
[Optional] A URI to stream from instead of the audio input device
uint8_t priority
[Optional, Default: 0] Transmit priority between 0 (lowest) and 255 (highest).
bool receiverRxMuteForAliasSpecializer
[Optional, Default: false] Indicates that the aliasSpecializer must cause receivers to mute this tran...
uint16_t subchannelTag
[Optional, Default: 0] Defines a sub channel within a group. Audio will be opaque to all other client...
bool reBegin
[Optional, Default: false] Indicates that the transmission should be restarted.
uint16_t aliasSpecializer
[Optional, Default: 0] Defines a numeric affinity value to be included in the transmission....
uint16_t flags
[Optional, Default: 0] Combination of the ENGAGE_TXFLAG_xxx flags
std::string alias
[Optional, Default: empty string] The Engage Engine should transmit the user's alias as part of the h...
bool includeNodeId
[Optional, Default: false] The Engage Engine should transmit the NodeId as part of the header extensi...
uint32_t txId
[Optional, Default: 0] Transmission ID
bool muted
[Optional, Default: false] While the microphone should be opened, captured audio should be ignored un...
Defines parameters for advertising of an entity such as a known, public, group.
int intervalMs
[Optional, Default: 20000] Interval at which the advertisement should be sent in milliseconds.
bool enabled
[Optional, Default: false] Enabled advertising
bool alwaysAdvertise
[Optional, Default: false] If true, the node will advertise the item even if it detects other nodes m...
Acoustic Echo Cancellation settings.
int speakerTailMs
[Optional, Default: 60] Milliseconds of speaker tail
bool cng
[Optional, Default: true] Enable comfort noise generation
bool enabled
[Optional, Default: false] Enable acoustic echo cancellation
Mode_t
Acoustic echo cancellation mode enum.
Mode_t mode
[Optional, Default: aecmDefault] Specifies AEC mode. See Mode_t for all modes
bool enabled
[Optional, Default: false] Enables automatic gain control.
int compressionGainDb
[Optional, Default: 25, Minimum = 0, Maximum = 125] Gain in db.
bool enableLimiter
[Optional, Default: false] Enables limiter to prevent overdrive.
int maxLevel
[Optional, Default: 255] Maximum level.
int minLevel
[Optional, Default: 0] Minimum level.
int targetLevelDb
[Optional, Default: 9] Target gain level if there is no compression gain.
Default audio settings for AndroidAudio.
int api
[Optional, Default 0] Android audio API version: 0=Unspecified, 1=AAudio, 2=OpenGLES
int sessionId
[Optional, Default INVALID_SESSION_ID] A session ID from the Android AudioManager
int contentType
[Optional, Default 1] Usage type: 1=Speech 2=Music 3=Movie 4=Sonification
int sharingMode
[Optional, Default 0] Sharing mode: 0=Exclusive, 1=Shared
int performanceMode
[Optional, Default 12] Performance mode: 10=None/Default, 11=PowerSaving, 12=LowLatency
int inputPreset
[Optional, Default 7] Input preset: 1=Generic 5=Camcorder 6=VoiceRecognition 7=VoiceCommunication 9=U...
int usage
[Optional, Default 2] Usage type: 1=Media 2=VoiceCommunication 3=VoiceCommunicationSignalling 4=Alarm...
int engineMode
[Optional, Default 0] 0=use legacy low-level APIs, 1=use high-level Android APIs
Custom Audio Device Configuration.
std::string type
Device type (if any)
int samplingRate
This is the rate that the device will process the PCM audio data at.
std::string name
Name of the device assigned by the platform.
bool isDefault
True if this is the default device for the direction above.
std::string serialNumber
Device serial number (if any)
int channels
Indicates the number of audio channels to process.
std::string hardwareId
Device hardware ID (if any)
std::string manufacturer
Device manufacturer (if any)
Direction_t
Audio Device Direction Enum.
@ dirOutput
This is an output only device.
@ dirInput
This is an input only device.
std::string model
Device mode (if any)
Direction_t direction
Audio direction the device supports.
std::string extra
Extra data provided by the platform (if any)
bool isPresent
True if the device is currently present on the system.
int boostPercentage
A percentage at which to gain/attenuate the audio.
bool isAdad
True if the device is an Application-Defined Audio Device.
int deviceId
[Read Only] Unique device identifier assigned by Engage Engine at time of device creation.
Description of an audio gate.
double coefficient
[Optional. Default: 1.75] Coefficient by which to multiply the current history average to determine t...
uint32_t hangMs
[Optional. Default: 1500] Hang timer in milliseconds
bool enabled
[Optional. Default: false] Enables the audio gate if true
uint32_t windowMin
[Optional. Default: 25] Number of 10ms history samples to gather before calculating the noise floor -...
bool useVad
[Optional. Default: false] Use voice activity detection rather than audio energy
uint32_t windowMax
[Optional. Default: 125] Maximum number of 10ms history samples - ignored if useVad is true
Used to configure the Audio properties for a group.
int outputLevelRight
[Optional, Default: 100] The percentage at which to set the right audio at.
std::string outputHardwareId
[Optional] Hardware ID of the output audio device to use for this group. If empty,...
bool outputMuted
[Optional, Default: false] Mutes output audio.
std::string inputHardwareId
[Optional] Hardware ID of the input audio device to use for this group. If empty, inputId is used.
bool enabled
[Optional, Default: true] Audio is enabled
int inputId
[Optional, Default: first audio device] Id for the input audio device to use for this group.
int outputGain
[Optional, Default: 0] The percentage at which to gain the output audio.
int outputId
[Optional, Default: first audio device] Id for the output audio device to use for this group.
int inputGain
[Optional, Default: 0] The percentage at which to gain the input audio.
int outputLevelLeft
[Optional, Default: 100] The percentage at which to set the left audio at.
Describes an audio device that is available on the system.
std::string model
[Optional] Model
std::string extra
[Optional] Extra
std::string name
Name of the device.
std::string manufacturer
[Optional] Manufacturer
std::string type
[Optional] Type
std::string hardwareId
The string identifier used to identify the hardware.
bool isDefault
True if this is the default device.
std::string serialNumber
[Optional] Serial number
Describes an audio registry.
std::vector< AudioRegistryDevice > inputs
[Optional] List of input devices to use for the registry.
std::vector< AudioRegistryDevice > outputs
[Optional] List of output devices to use for the registry.
Describes the Blob data being sent used in the engageSendGroupBlob API.
size_t size
[Optional, Default : 0] Size of the payload
RtpHeader rtpHeader
Custom RTP header.
PayloadType_t payloadType
[Optional, Default: bptUndefined] The payload type to send in the blob
std::string target
[Optional, Default: empty string] The nodeId to which this message is targeted. If this is empty,...
std::string source
[Optional, Default: empty string] The nodeId of Engage Engine that sent the message....
int txnTimeoutSecs
[Optional, Default: 0] Number of seconds after which to time out delivery to the target node
PayloadType_t
Payload type. BlobInfo RTP supported Payload types.
std::string txnId
[Optional but required if txnTimeoutSecs is > 0]
Detailed information for a bridge creation.
CreationStatus_t
Creation status.
CreationStatus_t status
The creation status.
std::string id
ID of the bridge.
Bridging session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the bridge NOTE: this is only used bt EBS and is ignored when callin...
std::vector< Group > groups
Array of bridges in the configuration.
std::vector< Bridge > bridges
Array of bridges in the configuration.
Configuration for the bridging server.
std::string certStoreFileName
Path to the certificate store.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
OpMode_t mode
Specifies the default operation mode (see OpMode_t).
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
BridgingServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string bridgingConfigurationFileCommand
Command-line to execute that returns a bridging configuration.
std::string bridgingConfigurationFileName
Name of a file containing the bridging configuration.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
OpMode_t
Enum describing the default mode the bridging service runs in. Values of omRaw, omMultistream,...
BridgingServerInternals internals
Internal settings.
int bridgingConfigurationFileCheckSecs
Number of seconds between checks to see if the bridging configuration has been updated....
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
std::string id
A unqiue identifier for the bridge server.
NsmConfiguration nsm
[Optional] Settings for NSM.
Internal bridging server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
TuningSettings tuning
[Optional] Low-level tuning
WatchdogSettings watchdog
[Optional] Settings for the watchdog.
TODO: Configuration for the bridging server status report file.
bool includeBridgeGroupDetail
Description of a certstore certificate element.
std::string tags
Additional attributes.
bool hasPrivateKey
True if the certificate has a private key associated with it.
std::string certificatePem
PEM of the certificate.
Holds a certificate and (optionally) a private key in a certstore.
std::string tags
Additional tags.
std::string id
Id of the certificate.
std::string certificatePem
Certificate in PEM format.
void * internalData
Unserialized internal data.
std::string privateKeyPem
Private key in PEM format.
Description of a certstore.
std::string id
Certstore ID.
std::vector< CertStoreCertificateElement > certificates
Array of certificate elements.
std::string fileName
Name of the file the certstore resides in.
int flags
Flags set for the certstore.
int version
Version of the certstore.
std::vector< KvPair > kvp
Array of kv pairs.
std::vector< KvPair > kvp
[Optional] Array of KV pairs
std::vector< CertStoreCertificate > certificates
Array of certificates in this store.
std::string id
The ID of the certstore.
Description of a certificate.
std::vector< CertificateSubjectElement > subjectElements
Array of subject elements.
std::string serial
Serial #.
std::string publicKeyPem
PEM version of the public key.
std::vector< CertificateSubjectElement > issuerElements
Array of issuer elements.
bool selfSigned
Indicates whether the certificqte is self-signed.
std::string fingerprint
Fingerprint.
std::string notAfter
Validity date notAfter.
std::string subject
Subject.
std::string notBefore
Validity date notBefore.
std::string issuer
Issuer.
std::string certificatePem
PEM version of the certificate.
Description of a certificate subject element.
Connectivity Information used as part of the PresenceDescriptor.
int type
Is the type of connectivity the device has to the network.
int strength
Is the strength of the connection connection as reported by the OS - usually in dbm.
int rating
Is the quality of the network connection as reported by the OS - OS dependent.
Cistech Discovery settings.
Configuration for the Discovery features.
DiscoveryMagellan magellan
DiscoveryTrellisware trellisware
DiscoveryMagellan Discovery settings.
SecurityCertificate security
Tls tls
[Optional] Details concerning Transport Layer Security.
std::string interfaceName
[Optional, Default: default system interface] The network interface to bind to for discovery packets.
Session Announcement Discovery settings settings.
int ageTimeoutMs
[Optional, Default 30000] Number of milliseconds of no SAP announcment before the advertised entity i...
Advertising advertising
Parameters for advertising.
NetworkAddress address
[Optional, Default 224.2.127.254:9875] IP address and port.
bool enabled
[Optional, Default: false] Enables the Engage Engine to use SAP for asset discovery.
std::string interfaceName
[Optional, Default: default system interface] The network interface to bind to for discovery packets.
Simple Service Discovery Protocol settings.
bool enabled
[Optional, Default: false] Enables the Engage Engine to use SSDP for asset discovery.
std::vector< std::string > searchTerms
[Optional] An array of regex strings to be used to filter SSDP requests and responses.
int ageTimeoutMs
[Optional, Default 30000] Number of milliseconds of no SSDP announcment before the advertised entity ...
Advertising advertising
Parameters for advertising.
std::string interfaceName
[Optional, Default: default system interface] The network interface to bind to for discovery packets.
NetworkAddress address
[Optional, Default 255.255.255.255:1900] IP address and port.
Trellisware Discovery settings.
SecurityCertificate security
std::vector< Group > groups
Array of groups in the configuration.
Configuration for the ear server.
std::string id
A unqiue identifier for the EAR server.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NsmConfiguration nsm
[Optional] Settings for NSM.
EarServerInternals internals
Internal settings.
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
EarServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string certStoreFileName
Path to the certificate store.
std::string groupsConfigurationFileName
Name of a file containing the ear configuration.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
Internal ear server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the EAR's watchdog.
TuningSettings tuning
[Optional] Low-level tuning
TODO: Configuration for the ear server status report file.
NetworkAddress rx
Internal RX detail.
NetworkAddress tx
Internal TX detail.
std::string id
Internal ID.
Engage Semaphore configuration.
std::vector< Group > groups
Array of groups in the configuration.
Configuration for the EFC server.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
EngageSemServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string id
A unqiue identifier for the EFC server.
std::string certStoreFileName
Path to the certificate store.
std::string groupsConfigurationFileName
Name of a file containing the EFC configuration.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
EngageSemServerInternals internals
Internal settings.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
Internal EFC server settings.
WatchdogSettings watchdog
[Optional] Settings for the EFC's watchdog.
TuningSettings tuning
[Optional] Low-level tuning
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
TODO: Configuration for the EFC server status report file.
std::vector< EngateGroup > groups
Array of groups in the configuration.
Configuration for the engate server.
EngateServerStatusReportConfiguration statusReport
Details for producing a status report.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
std::string groupsConfigurationFileName
Name of a file containing the ear configuration.
EngateServerInternals internals
Internal settings.
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
std::string certStoreFileName
Path to the certificate store.
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
std::string id
A unqiue identifier for the EAR server.
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
Internal engate server settings.
TuningSettings tuning
[Optional] Low-level tuning
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the EAR's watchdog.
TODO: Configuration for the engate server status report file.
Configuration for RP UDP streaming.
TxPriority_t priority
[Optional, Default: priVoice] Transmission priority. This has meaning on some operating systems based...
int keepaliveIntervalSecs
Optional, Default: 15] Seconds interval at which to send UDP keepalives to Rallypoints....
int ttl
[Optional, Default: 64] Time to live or hop limit is a mechanism that limits the lifespan or lifetime...
int port
[Optional, 0] The port to be used for Rallypoint UDP streaming. A value of 0 will result in an epheme...
bool enabled
[Optional, false] Enables UDP streaming if the RP supports it
Default audio settings for Engage Engine policy.
AudioRegistry registry
[Optional] If specified, this registry will be used to discover the input and output devices
Vad vad
[Optional] Voice activity detection settings
Agc outputAgc
[Optional] Automatic Gain Control for audio outputs
bool saveOutputPcm
[Optional, Default: false] If true, input audio is written to a PCM file in the data directory
bool enabled
[Optional, Default: true] Enables audio processing
AndroidAudio android
[Optional] Android-specific audio settings
int internalRate
[Optional, Default: 16000] Internal sampling rate - 8000 or 16000
bool muteTxOnTx
[Optional, Default: false] Automatically mute TX when TX begins
Agc inputAgc
[Optional] Automatic Gain Control for audio inputs
bool hardwareEnabled
[Optional, Default: true] Enables local machine hardware audio
Aec aec
[Optional] Acoustic echo cancellation settings
bool denoiseInput
[Optional, Default: false] Denoise input
bool saveInputPcm
[Optional, Default: false] If true, input audio is written to a PCM file in the data directory
bool denoiseOutput
[Optional, Default: false] Denoise output
int internalChannels
[Optional, Default: 2] Internal audio channel count rate - 1 or 2
Provides Engage Engine policy configuration.
std::vector< ExternalModule > externalCodecs
Optional external codecs.
EnginePolicyNamedAudioDevices namedAudioDevices
Optional named audio devices (Linux only)
Featureset featureset
Optional feature set.
EnginePolicyDatabase database
Database settings.
EnginePolicyAudio audio
Audio settings.
std::string dataDirectory
Specifies the root of the physical path to store data.
Licensing licensing
Licensing settings.
EnginePolicyLogging logging
Logging settings.
DiscoveryConfiguration discovery
Discovery settings.
std::vector< RtpMapEntry > rtpMap
Optional RTP - overrides the default.
EngineStatusReportConfiguration statusReport
Optional statusReport - details for the status report.
EnginePolicyInternals internals
Internal settings.
EnginePolicySecurity security
Security settings.
EnginePolicyTimelines timelines
Timelines settings.
EnginePolicyNetworking networking
Security settings.
Internal Engage Engine settings.
TuningSettings tuning
[Optional] Low-level tuning
int stickyTidHangSecs
[Optional, Default: 10] The number of seconds after which "sticky" transmission IDs expire.
int maxTxSecs
[Optional, Default: 30] The default duration the engageBeginGroupTx and engageBeginGroupTxAdvanced fu...
int rpConnectionTimeoutSecs
[Optional, Default: 5] Connection timeout in seconds to RP
WatchdogSettings watchdog
[Optional] Settings for the Engine's watchdog.
RallypointCluster::ConnectionStrategy_t rpClusterStrategy
[Optional, Default: csRoundRobin] Specifies the default RP cluster connection strategy to be followed...
int delayedMicrophoneClosureSecs
[Optional, Default: 15] The number of seconds to cache an open microphone before actually closing it.
int rpTransactionTimeoutMs
[Optional, Default: 5] Transaction timeout with RP
int rtpExpirationCheckIntervalMs
[Optional, Default: 250] Interval at which to check for RTP expiration.
int rpClusterRolloverSecs
[Optional, Default: 10] Seconds between switching to a new target in a RP cluster
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
int uriStreamingIntervalMs
[Optional, Default: 60] The packet framing interval for audio streaming from a URI.
int maxLevel
[Optional, Default: 4, Range: 0-4] This is the maximum logging level to display in other words,...
EngineNetworkingRpUdpStreaming rpUdpStreaming
[Optional] Configuration for UDP streaming
std::string defaultNic
The default network interface card the Engage Engine should bind to.
RtpProfile rtpProfile
[Optional] Configuration for RTP profile
AddressResolutionPolicy_t addressResolutionPolicy
[Optional, Default 64] Address resolution policy
int multicastRejoinSecs
[Optional, Default: 8] Number of seconds elapsed between RX of multicast packets before an IGMP rejoi...
bool logRtpJitterBufferStats
[Optional, Default: false] If true, logs RTP jitter buffer statistics periodically
int rallypointRtTestIntervalMs
[Optional, Default: 60000] Milliseconds between sending Rallypoint round-trip test requests
bool preventMulticastFailover
[Optional, Default: false] Overrides/cancels group-level multicast failover if set to true
Default certificate to use for security operation in the Engage Engine.
SecurityCertificate certificate
The default certificate and private key for the Engine instance.
std::vector< std::string > caCertificates
[Optional] An array of CA certificates to be used for validation of far-end X.509 certificates
Engine Policy Timeline configuration.
long autosaveIntervalSecs
[Default 5] Interval at which events are to be saved from memory to disk (a slow operation)
int maxStorageMb
Specifies the maximum storage space to use.
bool enabled
[Optional, Default: true] Specifies if Time Lines are enabled by default.
int maxDiskMb
Specifies the maximum disk space to use - defaults to maxStorageMb.
SecurityCertificate security
The certificate to use for signing the recording.
int maxAudioEventMemMb
Specifies the maximum number of megabytes to allow for a single audio event's memory block - defaults...
long maxEventAgeSecs
Maximum age of an event after which it is to be erased.
int maxMemMb
Specifies the maximum memory to use - defaults to maxStorageMb.
std::string storageRoot
Specifies where the timeline recordings will be stored physically.
bool ephemeral
[Default false] If true, recordings are automatically purged when the Engine is shut down and/or rein...
bool disableSigningAndVerification
[Default false] If true, prevents signing of events - i.e. no anti-tanpering features will be availab...
int maxEvents
Maximum number of events to be retained.
long groomingIntervalSecs
Interval at which events are to be checked for age-based grooming.
TODO: Configuration for the translation server status report file.
bool includeTaskQueueDetail
Describes an external codec.
int samplingRate
Sampling rate.
int rtpPayloadType
RTP payload type.
int rtpTsMultiplier
RTP timestamp multiplier.
TODO: Configuration to enable external systems to use to check if the service is still running.
Base for a description of an external module.
std::string file
File spec.
nlohmann::json configuration
Optional free-form JSON configuration to be passed to the module.
bool debug
[Optional, Default false] If true, requests the crypto engine module to run in debugging mode.
bool enabled
[Optional, Default false] If true, requires FIPS140-2 crypto operation.
std::string curves
[Optional] Specifies the NIST-approved curves to be used for FIPS
std::string path
Path where the crypto engine module is located
std::string ciphers
[Optional] Specifies the NIST-approved ciphers to be used for FIPS
Configuration for the optional custom transport functionality for Group.
bool enabled
[Optional, Default: false] Enables custom feature.
std::string id
The id/name of the transport. This must match the id/name supplied when registering the app transport...
BridgingOpMode_t
Enum describing bridging operation mode types where applicable.
AdvancedTxParams mixedStreamTxParams
[Optional] Parameters to be applied when output is mixed (bomMixedStream)
BridgingOpMode_t mode
[Optional] The output mode
Detailed information for a group connection.
std::string id
ID of the group.
std::string peer
Peer information.
ConnectionType_t
Connection type.
bool asFailover
Indicates whether the connection is for purposes of failover.
ConnectionType_t connectionType
The connection type.
std::string reason
[Optional] Additional reason information
Detailed information for a group creation.
std::string id
ID of the group.
CreationStatus_t status
The creation status.
CreationStatus_t
Creation status.
uint8_t tx
[Optional] The default audio priority
uint8_t rx
[Optional] The default audio RX priority
Detailed information regarding a group's health.
GroupAppTransport appTransport
[Optional] Settings necessary if the group is transported via an application-supplied custom transpor...
std::string source
[Optional, Default: null] Indicates the source of this configuration - e.g. from the application or d...
Presence presence
Presence configuration (see Presence).
std::vector< uint16_t > specializerAffinities
List of specializer IDs that the local node has an affinity for/member of.
std::vector< Source > ignoreSources
[Optional] List of sources to ignore for this group
NetworkAddress rtcpPresenceRx
The network address for receiving RTCP presencing packets.
bool allowLoopback
[Optional, Default: false] Allows for processing of looped back packets - primarily meant for debuggi...
Type_t
Enum describing the group types.
NetworkAddress tx
The network address for transmitting network traffic to.
std::string alias
User alias to transmit as part of the realtime audio stream when using the engageBeginGroupTx API.
int stickyTidHangSecs
[Optional, Default: 10] The number of seconds after which "sticky" transmission IDs expire.
TxAudio txAudio
Audio transmit options such as codec, framing size etc (see TxAudio).
int maxRxSecs
[Optional, Default: 0] Maximum number of seconds the Engine will receive for on this group.
PacketCapturer txCapture
Details for capture of transmitted packets
NetworkTxOptions txOptions
Transmit options for the group (see NetworkTxOptions).
std::string synVoice
Name of the synthesis voice to use for the group
TransportImpairment rxImpairment
[Optional] The RX impairment to apply
std::string languageCode
ISO 639-2 language code for the group
std::string cryptoPassword
Password to be used for encryption. Note that this is not the encryption key but, rather,...
std::vector< std::string > presenceGroupAffinities
List of presence group IDs with which this group has an affinity.
GroupTimeline timeline
Audio timeline is configuration.
GroupPriorityTranslation priorityTranslation
[Optional] Describe how traffic for this group on a different addressing scheme translates to priorit...
bool disablePacketEvents
[Optional, Default: false] Disable packet events.
bool blockAdvertising
[Optional, Default: false] Set this to true if you do not want the Engine to advertise this Group on ...
bool ignoreAudioTraffic
[Optional, Default: false] Indicates that the group should ignore traffic that is audio-related
std::string interfaceName
The name of the network interface to use for multicasting for this group. If not provided,...
bool _wasDeserialized_rtpProfile
[Internal - not serialized
bool enableMulticastFailover
[Optional, Default: false] Set this to true to enable failover to multicast operation if a Rallypoint...
std::string name
The human readable name for the group.
NetworkAddress rx
The network address for receiving network traffic on.
Type_t type
Specifies the group type (see Type_t).
GroupDefaultAudioPriority defaultAudioPriority
Default audio priority for the group (see GroupDefaultAudioPriority).
uint16_t blobRtpPayloadType
[Optional, Default: ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE] The RTP payload type to be used for blobs s...
std::vector< Rallypoint > rallypoints
[DEPRECATED] List of Rallypoint (s) the Group should use to connect to a Rallypoint router....
RtpProfile rtpProfile
[Optional] RTP profile the group
std::vector< RtpPayloadTypeTranslation > inboundRtpPayloadTypeTranslations
[Optional] A vector of translations from external entity RTP payload types to those used by Engage
int multicastFailoverSecs
[Optional, Default: 10] Specifies the number fo seconds to wait after Rallypoint connection failure t...
InboundAliasGenerationPolicy_t
Enum describing the alias generation policy.
RangerPackets rangerPackets
[Optional] Ranger packet options
int rfc4733RtpPayloadId
[Optional, Default: 0] The RTP payload ID by which to identify (RX and TX) payloads encoded according...
uint32_t securityLevel
[Optional, Default: 0] The security classification level of the group.
PacketCapturer rxCapture
Details for capture of received packets
GroupBridgeTargetOutputDetail bridgeTargetOutputDetail
Output details for when the group is a target in a bridge (see GroupBridgeTargetOutputDetail).
std::string id
Unique identity for the group.
AudioGate gateIn
[Optional] Inbound gating of audio - only audio allowed through by the gate will be processed
RallypointCluster rallypointCluster
Cluster of one or more Rallypoints the group may use.
TransportImpairment txImpairment
[Optional] The TX impairment to apply
Audio audio
Sets audio properties like which audio device to use, audio gain etc (see Audio).
bool lbCrypto
[Optional, Default: false] Use low-bandwidth crypto
std::string spokenName
The group name as spoken - typically by a text-to-speech system
InboundAliasGenerationPolicy_t inboundAliasGenerationPolicy
[Optional, Default: iagpAnonymousAlias]
std::string anonymousAlias
[Optional] Alias to use for inbound streams that do not have an alias component
Details for priority transmission based on unique network addressing.
NetworkAddress tx
TX addressing.
int priority
Engage priority for RX & TX.
NetworkAddress rx
RX addressing.
Detailed information for a group reconfiguration.
ReconfigurationStatus_t status
The creation status.
std::string id
ID of the group.
ReconfigurationStatus_t
Reconfiguration status.
Detailed statistics for group.
List of TalkerInformation objects.
std::vector< TalkerInformation > list
List of TalkerInformation objects.
Configuration for Timeline functionality for Group.
bool enabled
[Optional, Default: true] Enables timeline feature.
int maxAudioTimeMs
[Optional, Default: 30000] Maximum audio block size to record in milliseconds.
Detailed information for a group transmit.
std::string id
ID of the group.
int remotePriority
Remote TX priority (optional)
long nonFdxMsHangRemaining
Milliseconds of hang time remaining on a non-FDX group (optional)
int localPriority
Local TX priority (optional)
uint32_t txId
Transmission ID (optional)
TxStatus_t status
The TX status.
std::string displayName
[Optional, Default: empty string] The display name to be used for the user.
std::string userId
[Optional, Default: empty string] The user ID to be used to represent the user.
std::string nodeId
[Optional, Default: Auto Generated] This is the Node ID to use to represent instance on the network.
std::string avatar
[Optional, Default: empty string] This is a application defined field used to indicate a users avatar...
Configuration for IGMP snooping.
int queryIntervalMs
[Optional, Default 125000] Interval between sending IGMP membership queries. If 0,...
int subscriptionTimeoutMs
[Optional, Default 0] Typically calculated according to RFC specifications. Set a value here to manua...
bool enabled
Enables IGMP. Default is false.
Detailed statistics for an inbound processor.
Helper class for serializing and deserializing the LicenseDescriptor JSON.
std::string 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.
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
std::string lingoConfigurationFileCommand
Command-line to execute that returns a linguistics configuration.
LingoServerInternals internals
Internal settings.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
int lingoConfigurationFileCheckSecs
Number of seconds between checks to see if the linguistics configuration has been updated....
std::string certStoreFileName
Path to the certificate store.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NetworkAddress proxy
Address and port of the proxy.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
Internal translator server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the watchdog.
TuningSettings tuning
[Optional] Low-level tuning
TODO: Configuration for the translation server status report file.
bool includeSessionGroupDetail
bool includeSessionDetail
Location information used as part of the PresenceDescriptor.
double longitude
Its the longitudinal position using the Signed degrees format (DDD.dddd) format. Valid range is -180 ...
double altitude
[Optional, Default: INVALID_LOCATION_VALUE] The altitude above sea level in meters.
uint32_t ts
[Read Only: Unix timestamp - Zulu/UTC] Indicates the timestamp that the location was recorded.
double latitude
Its the latitude position using the using the Signed degrees format (DDD.dddd). Valid range is -90 to...
double direction
[Optional, Default: INVALID_LOCATION_VALUE] Direction the endpoint is traveling in degrees....
double speed
[Optional, Default: INVALID_LOCATION_VALUE] The speed the endpoint is traveling at in meters per seco...
Defines settings for a named identity.
SecurityCertificate certificate
The identity certificate.
std::string name
The identity name.
std::string address
IP address.
NetworkAddressRestrictionList.
RestrictionType_t type
Type indicating how the elements are to be treated.
std::vector< NetworkAddressRxTx > elements
List of elements.
Custom Network Device Configuration.
std::string manufacturer
Device manufacturer (if any)
std::string model
Device mode (if any)
int deviceId
[Read Only] Unique device identifier assigned by Engage Engine at time of device creation.
std::string extra
Extra data provided by the platform (if any)
std::string type
Device type (if any)
std::string hardwareId
Device hardware ID (if any)
std::string serialNumber
Device serial number (if any)
std::string name
Name of the device assigned by the platform.
Network Transmit Options.
int ttl
[Optional, Default: 1] Time to live or hop limit is a mechanism that limits the lifespan or lifetime ...
TxPriority_t priority
[Optional, Default: priVoice] Transmission priority. This has meaning on some operating systems based...
Description of a packet capturer.
Configuration for Rallypoint peers.
int version
TODO: A version number for the domain configuration. Change this whenever you update your configurati...
std::string comments
Comments.
std::string id
An identifier useful for organizations that track different domain configurations by ID.
std::vector< RallypointPeer > peers
List of Rallypoint peers to connect to.
Device Power Information used as part of the PresenceDescriptor.
int state
[Optional, Default: 0] Is the current state that the power system is in.
int source
[Optional, Default: 0] Is the source the power is being delivered from
int level
[Optional, Default: 0] Is the current level of the battery or power system as a percentage....
Group Alias used as part of the PresenceDescriptor.
uint16_t status
Status flags for the user's participation on the group.
std::string alias
User's alias for the group.
std::string groupId
Group Id the alias is associated with.
Represents an endpoints presence properties. Used in engageUpdatePresenceDescriptor API and PFN_ENGAG...
Power power
[Optional, Default: see Power] Device power information like charging state, battery level,...
std::string custom
[Optional, Default: empty string] Custom string application can use of presence descriptor....
bool self
[Read Only] Indicates that this presence declaration was generated by the Engage Engine the applicati...
uint32_t nextUpdate
[Read Only, Unix timestamp - Zulu/UTC] Indicates the next time the presence descriptor will be sent.
std::vector< PresenceDescriptorGroupItem > groupAliases
[Read Only] List of group items associated with this presence descriptor.
Identity identity
[Optional, Default see Identity] Endpoint's identity information.
bool announceOnReceive
[Read Only] Indicates that the Engine will announce its PresenceDescriptor in response to this messag...
uint32_t ts
[Read Only, Unix timestamp - Zulu/UTC] Indicates the timestamp that the message was originally sent.
std::string comment
[Optional] No defined limit on size but the total size of the serialized JSON object must fit inside ...
Connectivity connectivity
[Optional, Default: see Connectivity] Device connectivity information like wifi/cellular,...
uint32_t disposition
[Optional] Indicates the users disposition
Location location
[Optional, Default: see Location] Location information
Describes how the Presence is configured for a group of type Group::gtPresence in Group::Type_t.
Format_t format
Format to be used to represent presence information.
Format_t
Presence format types enum.
bool reduceImmediacy
[Optional, Default: false] Instructs the Engage Engine reduce the immediacy of presence announcements...
bool listenOnly
Instructs the Engage Engine to not transmit presence descriptor.
int minIntervalSecs
[Optional, Default: 5] The minimum interval to send at to prevent network flooding
int intervalSecs
[Optional, Default: 30] The interval in seconds at which to send the presence descriptor on the prese...
Defines settings for Rallypoint advertising.
std::string interfaceName
The multicast network interface for mDNS.
std::string serviceName
[Optional, Default "_rallypoint._tcp.local."] The service name
std::string hostName
[Optional] This Rallypoint's DNS-SD host name
int port
[Default: RP port] The multicast network interface for mDNS
bool enabled
[Default: false] Advertising is enabled
int ttl
[Default: 60] TTL for service TTL
int rolloverSecs
Seconds between switching to a new target.
ConnectionStrategy_t
Connection strategy enum.
int transactionTimeoutMs
[Optional, Default: 10000] Default transaction time in milliseconds to any RP in the cluster
int connectionTimeoutSecs
[Optional, Default: 5] Default connection timeout in seconds to any RP in the cluster
std::vector< Rallypoint > rallypoints
List of Rallypoints.
ConnectionStrategy_t connectionStrategy
[Optional, Default: csRoundRobin] Specifies the connection strategy to be followed....
Detailed information for a rallypoint connection.
std::string internalId
Id.
float serverProcessingMs
Server processing time in milliseconds - used for roundtrip reports.
uint64_t msToNextConnectionAttempt
Milliseconds until next connection attempt.
Defines settings for Rallypoint extended group restrictions.
std::vector< StringRestrictionList > restrictions
Restrictions.
int transactionTimeoutMs
[Optional, Default 10000] Number of milliseconds that a transaction may take before the link is consi...
bool allowSelfSignedCertificate
[Optional, Default false] Allows the Rallypoint to accept self-signed certificates from the far-end
std::string sni
[Optional] A user-defined string sent as the Server Name Indication (SNI) field in the TLS setup....
std::vector< std::string > caCertificates
[Optional] A vector of certificates (raw content, file names, or certificate store elements) used to ...
std::string certificate
This is the X509 certificate to use for mutual authentication.
bool verifyPeer
[Optional, Default true] Indicates whether the connection peer is to be verified by checking the vali...
bool disableMessageSigning
[Optional, Default false] Indicates whether to forego ECSDA signing of control-plane messages.
NetworkAddress host
This is the host address for the Engine to connect to the RallyPoint service.
std::string additionalProtocols
[Optional, Default: ""] Additional protocols to use for the Rallypoint connection (only used for WebS...
RpProtocol_t protocol
[Optional, Default: rppTlsTcp] Specifies the protocol to be used for the Rallypoint connection....
std::string certificateKey
This is the private key used to generate the X509 certificate.
int connectionTimeoutSecs
[Optional, Default: 5] Connection timeout in seconds to the RP
TcpNetworkTxOptions tcpTxOptions
[Optional] Tx options for the TCP link
std::string path
[Optional, Default: ""] Path to use for the RP connection (only used for WebSocket)
RpProtocol_t
RP protocol enum.
SecurityCertificate certificate
Internal certificate detail.
std::string id
Internal ID.
std::string additionalProtocols
[Optional, Default: ""] Additional protocols to use for the peer (only used for WebSocket)
bool forceIsMeshLeaf
Internal enablement setting.
int connectionTimeoutSecs
[Optional, Default: 0 - OS platform default] Connection timeout in seconds to the peer
NetworkAddress host
Internal host detail.
std::string path
[Optional, Default: ""] Path to use for the peer (only used for WebSocket)
bool enabled
Internal enablement setting.
Rallypoint::RpProtocol_t protocol
[Optional, Default: Rallypoint::RpProtocol_t::rppTlsTcp] Protocol to use for the peer
Definition of a static group for Rallypoints.
NetworkAddress rx
The network address for receiving network traffic on.
std::string id
Unique identity for the group.
std::vector< NetworkAddress > additionalTx
[Optional] Vector of additional TX addresses .
NetworkAddress tx
The network address for transmitting network traffic to.
DirectionRestriction_t directionRestriction
[Optional] Restriction of direction of traffic flow
DirectionRestriction_t
Enum describing direction(s) for the reflector.
std::string multicastInterfaceName
[Optional] The name of the NIC on which to send and receive multicast traffic.
Defines a behavior for a Rallypoint peer roundtrip time.
BehaviorType_t
Enum describing behavior types.
@ btReportWarn
Report at level warning.
@ btReportError
Report at level error.
@ btReportInfo
Report at level info.
BehaviorType_t behavior
Specifies the streaming mode type (see BehaviorType_t).
uint32_t atOrAboveMs
Network address for listening.
Configuration for the Rallypoint server.
uint32_t maxSecurityLevel
[Optional, Default 0] Sets the maximum item security level that can be registered with the RP
bool forwardDiscoveredGroups
Enables automatic forwarding of discovered multicast traffic to peer Rallypoints.
std::string interfaceName
Name of the NIC to bind to for listening for incoming TCP connections.
NetworkTxOptions multicastTxOptions
Tx options for multicast.
bool disableMessageSigning
Set to true to forgo DSA signing of messages. Doing so is is a security risk but can be useful on CPU...
SecurityCertificate certificate
X.509 certificate and private key that identifies the Rallypoint.
std::string multicastInterfaceName
The name of the NIC on which to send and receive multicast traffic.
StringRestrictionList groupRestrictions
Group IDs to be restricted (inclusive or exclusive)
std::string peeringConfigurationFileName
Name of a file containing a JSON array of Rallypoint peers to connect to.
uint32_t sysFlags
[Optional, Default 0] Internal system flags
int listenPort
TCP port to listen on. Default is 7443.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NetworkAddressRestrictionList multicastRestrictions
Multicasts to be restricted (inclusive or exclusive)
uint32_t normalTaskQueueBias
[Optional, Default 0] Sets the queue's normal task bias
PacketCapturer txCapture
Details for capture of transmitted packets
std::vector< RallypointReflector > staticReflectors
Vector of static groups.
bool enableLeafReflectionReverseSubscription
If enabled, causes a domain leaf to reverse-subscribe to a core node upon the core subscribing and a ...
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
IpFamilyType_t ipFamily
[Optional, Default IpFamilyType_t::ifIp4] Address familiy to be used for listening
int peerRtTestIntervalMs
[Optional, Default: 60000] Milliseconds between sending round-trip test requests to peers
WatchdogSettings watchdog
[Optional] Settings for the Rallypoint's watchdog.
DiscoveryConfiguration discovery
Details discovery capabilities.
bool isMeshLeaf
Indicates whether this Rallypoint is part of a core domain or hangs off the periphery as a leaf node.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
GroupRestrictionAccessPolicyType_t groupRestrictionAccessPolicyType
The policy employed to allow group registration.
RallypointServerStreamStatsExport streamStatsExport
Details for exporting stream statistics.
Licensing licensing
Licensing settings.
PacketCapturer rxCapture
Details for capture of received packets
std::vector< std::string > extraDomains
[Optional] List of additional domains that can be reached via this RP
uint32_t maxOutboundPeerConnectionIntervalDeltaSecs
[Optional, Default 15] Sets the delta value for the maximum number of seconds to delay when attemptin...
TuningSettings tuning
[Optional] Low-level tuning
RallypointAdvertisingSettings advertising
[Optional] Settings for advertising.
Featureset featureset
Optional feature set.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the Rallypoint's interaction with an external health-checker such as a load-balanc...
std::vector< RallypointExtendedGroupRestriction > extendedGroupRestrictions
Extended group restrictions.
int ioPools
Number of threading pools to create for network I/O. Default is -1 which creates 1 I/O pool per CPU c...
RallypointServerStatusReportConfiguration statusReport
Details for producing a status report.
std::vector< NamedIdentity > additionalIdentities
[Optional] List of additional named identities
IgmpSnooping igmpSnooping
IGMP snooping configuration.
RallypointServerLinkGraph linkGraph
Details for producing a Graphviz-compatible link graph.
RallypointServerLimits limits
Details for capacity limits and determining processing load.
PeeringConfiguration peeringConfiguration
Internal - not serialized.
std::string domainName
[Optional] This Rallypoint's domain name
bool allowMulticastForwarding
Allows traffic received on unicast links to be forwarded to the multicast network.
RallypointWebsocketSettings websocket
[Optional] Settings for websocket operation
std::string peeringConfigurationFileCommand
Command-line to execute that returns a JSON array of Rallypoint peers to connect to.
RallypointServerRouteMap routeMap
Details for producing a report containing the route map.
StreamIdPrivacyType_t streamIdPrivacyType
[Optional, default sptDefault] Modes for stream ID transformation.
bool allowPeerForwarding
Set to true to allow forwarding of packets received from other Rallypoints to all other Rallypoints....
TcpNetworkTxOptions tcpTxOptions
Tx options for TCP.
RallypointUdpStreaming udpStreaming
Optional configuration for high-performance UDP streaming.
bool forwardMulticastAddressing
Enables forwarding of multicast addressing to peer Rallypoints.
std::vector< RallypointRpRtTimingBehavior > peerRtBehaviors
[Optional] Array of behaviors for roundtrip times to peers
std::string id
A unqiue identifier for the Rallypoint.
NsmConfiguration nsm
[Optional] Settings for NSM.
bool disableLoopDetection
If true, turns off loop detection.
std::vector< std::string > blockedDomains
[Optional] List of domains that explictly MAY NOT connect to this RP
std::vector< std::string > allowedDomains
[Optional] List of domains that explicitly MAY connect to this RP
std::string certStoreFileName
Path to the certificate store.
int peeringConfigurationFileCheckSecs
Number of seconds between checks to see if the peering configuration has been updated....
Tls tls
Details concerning Transport Layer Security.
TODO: Configuration for Rallypoint limits.
uint32_t maxQOpsPerSec
Maximum number of queue operations per second (0 = unlimited)
uint32_t maxInboundBacklog
Maximum number of inbound backlog requests the Rallypoint will accept.
uint32_t normalPriorityQueueThreshold
Number of normal priority queue operations after which new connections will not be accepted.
uint32_t maxPeers
Maximum number of peers (0 = unlimited)
uint32_t maxTxBytesPerSec
Maximum number of bytes transmitted per second (0 = unlimited)
uint32_t maxTxPacketsPerSec
Maximum number of packets transmitted per second (0 = unlimited)
uint32_t maxRegisteredStreams
Maximum number of registered streams (0 = unlimited)
uint32_t maxClients
Maximum number of clients (0 = unlimited)
uint32_t maxMulticastReflectors
Maximum number of multicastReflectors (0 = unlimited)
uint32_t maxStreamPaths
Maximum number of bidirectional stream paths (0 = unlimited)
uint32_t lowPriorityQueueThreshold
Number of low priority queue operations after which new connections will not be accepted.
uint32_t maxRxBytesPerSec
Maximum number of bytes received per second (0 = unlimited)
uint32_t denyNewConnectionCpuThreshold
The CPU utilization threshold percentage (0-100) beyond which new connections are denied.
uint32_t maxRxPacketsPerSec
Maximum number of packets received per second (0 = unlimited)
uint32_t warnAtCpuThreshold
The CPU utilization threshold percentage (0-100) beyond which warnings are logged.
std::string leafRpStyling
std::string coreRpStyling
bool includeDigraphEnclosure
std::string clientStyling
TODO: Configuration for the Rallypoint status report file.
bool includePeerLinkDetails
bool includeClientLinkDetails
bool resetCountersAfterExport
ExportFormat_t
Enum describing format(s) for the stream stats export.
Streaming configuration for RP clients.
int listenPort
UDP port to listen on. Default is 7444.
TxPriority_t priority
[Optional, Default: priVoice] Transmission priority. This has meaning on some operating systems based...
RallypointUdpStreamingIpvX ipv4
IPv4
bool enabled
[Optional, Default true] If true, enables UDP streaming unless turned off on a per-family basis.
CryptoType_t cryptoType
[Optional, Default ctSharedKeyAes256FullIv] The crypto method to be used
int ttl
[Optional, Default: 64] Time to live or hop limit.
CryptoType_t
Enum describing UDP streaming modes.
int keepaliveIntervalSecs
[Optional, Default: 15] Interval (seconds) at which to send UDP keepalives
RallypointUdpStreamingIpvX ipv6
IPv6.
Streaming configuration for RP clients.
bool enabled
[Optional, Default true] If true, enables UDP streaming for vX.
NetworkAddress external
Network address for external entities to transmit to. Defaults to the address of the local interface ...
Defines settings for Rallypoint websockets functionality.
int listenPort
Listen port (TCP). Default is 8443.
SecurityCertificate certificate
Certificate to be used for WebSockets.
bool requireTls
[Default: false] Indicates whether TLS is required
bool enabled
[Default: false] Websocket is enabled
bool requireClientCertificate
[Default: false] Indicates whether the client is required to present a certificate
Options for Ranger packets.
int count
[Optional, Default: 5] Number of ranger packets to send when a new interval starts
int hangTimerSecs
[Optional, Default: -1] Number of seconds since last packet transmission before 'count' packets are s...
Helper class for serializing and deserializing the RiffDescriptor JSON.
CertificateDescriptor certDescriptor
[Optional] X.509 certificate parsed into a CertificateDescriptor object.
std::string meta
[Optional] Meta data associated with the file - typically a stringified JSON object.
bool verified
True if the ECDSA signature is verified.
int channels
Number of audio channels.
std::string signature
[Optional] ECDSA signature
std::string certPem
[Optional] X.509 certificate in PEM format used to sign the RIFF file.
int sampleCount
Number of audio samples.
std::string file
Name of the RIFF file.
std::string name
Name of the CODEC.
int engageType
An integer representing the codec type.
int rtpPayloadType
The RTP payload type identifier.
RtpPayloadTypeTranslation.
uint16_t engage
The payload type used by Engage.
uint16_t external
The payload type used by the external entity.
Configuration for the optional RtpProfile.
JitterMode_t
Jitter buffer mode.
int signalledInboundProcessorInactivityMs
[Optional, Default: inboundProcessorInactivityMs * 4] The number of milliseconds of RTP inactivity on...
int jitterUnderrunReductionAger
[Optional, Default: 100] Number of jitter buffer operations after which to reduce any underrun
int jitterMinMs
[Optional, Default: 100] Low-water mark for jitter buffers that are in a buffering state.
int jitterMaxFactor
[Optional, Default: 8] The factor by which to multiply the jitter buffer's active low-water to determ...
int inboundProcessorInactivityMs
[Optional, Default: 500] The number of milliseconds of RTP inactivity before heuristically determinin...
JitterMode_t mode
[Optional, Default: jmStandard] Specifies the operation mode (see JitterMode_t).
int jitterForceTrimAtMs
[Optional, Default: 0] Forces trimming of the jitter buffer if the queue length is greater (and not z...
int latePacketSequenceRange
[Optional, Default: 5] The delta in RTP sequence numbers in order to heuristically determine the star...
int jitterMaxExceededClipHangMs
[Optional, Default: 1500] Number of milliseconds for which the jitter buffer may exceed max before cl...
int jitterTrimPercentage
[Optional, Default: 10] The percentage of the overall jitter buffer sample count to trim when potenti...
int jitterMaxTrimMs
[Optional, Default: 250] Maximum number of milliseconds to be trimmed from a jitter buffer at any one...
int jitterMaxMs
[Optional, Default: 10000] Maximum number of milliseconds allowed in the queue
int latePacketTimestampRangeMs
[Optional, Default: 500] The delta in milliseconds in order to heuristically determine the start of a...
int jitterMaxExceededClipPerc
[Optional, Default: 10] Percentage by which maximum number of samples in the queue exceeded computed ...
int zombieLifetimeMs
[Optional, Default: 15000] The number of milliseconds that a "zombified" RTP processor is kept around...
int rtcpPresenceTimeoutMs
[Optional, Default: 45000] Timeout for RTCP presence.
int jitterUnderrunReductionThresholdMs
[Optional, Default: 1500] Number of milliseconds of error-free operations in a jitter buffer before t...
Configuration for a secure signature.
std::string signature
Contains the signature.
std::string certificate
Contains the PEM-formatted text of the certificate.
Configuration for a Security Certificate used in various configurations.
std::string key
As for above but for certificate's private key.
std::string certificate
Contains the PEM-formatted text of the certificate, OR, a reference to a PEM file denoted by "@file:/...
std::string alias
[Optional] An alias
std::string nodeId
[Optional] A node ID
RestrictionType_t type
Type indicating how the elements are to be treated.
std::vector< std::string > elements
List of elements.
RestrictionElementType_t elementsType
Type indicating what kind of data each element contains.
std::string nodeId
A unique identifier for the asset.
Group group
Details for the talkgroup.
Network Transmit Options for TCP.
Parameters for querying the group timeline.
bool onlyCommitted
Include only committed (not in-progress) events.
uint64_t startedOnOrAfter
Include events that started on or after this UNIX millisecond timestamp.
int onlyType
Include events for this type.
long maxCount
Maximum number of records to return.
uint64_t endedOnOrBefore
Include events that ended on or after this UNIX millisecond timestamp.
std::string sql
Ignore all other settings for SQL construction and use this query string instead.
bool mostRecentFirst
Sorted results with most recent timestamp first.
std::string onlyNodeId
Include events for this transmitter node ID.
int onlyDirection
Include events for this direction.
int onlyTxId
Include events for this transmission ID.
std::string onlyAlias
Include events for this transmitter alias.
TODO: Transport Security Layer (TLS) settings.
bool verifyPeers
[Optional, Default: true] When true, checks the far-end certificate validity and Engage-specific TLS ...
StringRestrictionList subjectRestrictions
[NOT USED AT THIS TIME]
std::vector< std::string > caCertificates
[Optional] Array of CA certificates (PEM or "@" file/certstore references) to be used to validate far...
StringRestrictionList issuerRestrictions
[NOT USED AT THIS TIME]
bool allowSelfSignedCertificates
[Optional, Default: false] When true, accepts far-end certificates that are self-signed.
std::vector< std::string > crlSerials
[Optional] Array of serial numbers certificates that have been revoked
Translation configuration.
std::vector< TranslationSession > sessions
Array of sessions in the configuration.
std::vector< Group > groups
Array of groups in the configuration.
Translation session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the session
Description of a transport impairment.
uint32_t maxActiveBlobObjects
[Optional, Default 0 (no max)] Maximum number of blob objects allowed to be active
uint32_t maxActiveRtpProcessors
[Optional, Default 0 (no max)] Maximum number concurrent RTP processors
uint32_t maxPooledBufferMb
[Optional, Default 0 (no max)] Maximum number of buffer bytes allowed to be pooled
uint32_t maxActiveBufferObjects
[Optional, Default 0 (no max)] Maximum number of buffer objects allowed to be active
uint32_t maxPooledBufferObjects
[Optional, Default 0 (no max)] Maximum number of buffer objects allowed to be pooled
uint32_t maxPooledRtpObjects
[Optional, Default 0 (no max)] Maximum number of RTP objects allowed to be pooled
uint32_t maxPooledBlobMb
[Optional, Default 0 (no max)] Maximum number of blob bytes allowed to be pooled
uint32_t maxPooledRtpMb
[Optional, Default 0 (no max)] Maximum number of RTP bytes allowed to be pooled
uint32_t maxActiveRtpObjects
[Optional, Default 0 (no max)] Maximum number of RTP objects allowed to be active
uint32_t maxPooledBlobObjects
[Optional, Default 0 (no max)] Maximum number of blob objects allowed to be pooled
Configuration for the audio transmit properties for a group.
int startTxNotifications
[Optional, Default: 5] Number of start TX notifications to send when TX is about to begin.
int framingMs
[Optional, Default: 60] Audio sample framing size in milliseconds.
int maxTxSecs
[Optional, Default: 0] Maximum number of seconds the Engine will transmit for.
uint32_t internalKey
[INTERNAL] The Engine-assigned key for the codec
bool enabled
[Optional, Default: true] Audio transmission is enabled
bool fdx
[Optional, Default: false] Indicates if full duplex audio is supported.
int initialHeaderBurst
[Optional, Default: 5] Number of headers to send at the beginning of a talk burst.
bool resetRtpOnTx
[Optional, Default: true] Resets RTP counters on each new transmission.
bool dtx
[Optional, Default: false] Support discontinuous transmission on those CODECs that allow it
std::string encoderName
[Optional] The name of the external codec - overrides encoder
TxCodec_t encoder
[Optional, Default: ctOpus8000] Specifies the Codec Type to use for the transmission....
int blockCount
[Optional, Default: 0] If >0, derives framingMs based on the encoder's internal operation
int smoothedHangTimeMs
[Optional, Default: 0] Hang timer for ongoing TX - only applicable if enableSmoothing is true
int customRtpPayloadType
[Optional, Default: -1] The custom RTP payload type to use for transmission. A value of -1 causes the...
bool noHdrExt
[Optional, Default: false] Set to true whether to disable header extensions.
bool enableSmoothing
[Optional, Default: true] Smooth input audio
int trailingHeaderBurst
[Optional, Default: 5] Number of headers to send at the conclusion of a talk burst.
int extensionSendInterval
[Optional, Default: 10] The number of packets when to periodically send the header extension.
TxCodec_t
Codec Types enum.
Optional audio streaming from a URI for engageBeginGroupTxAdvanced.
std::string uri
URI for the file.
int repeatCount
[Optional, Default: 0] Number of times to repeat
Voice Activity Detection settings.
bool enabled
[Optional, Default: false] Enable VAD
Mode_t mode
[Optional, Default: vamDefault] Specifies VAD mode. See Mode_t for all modes
Voice to voice session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the session
int intervalMs
[Optional, Default: 5000] Interval at which checks are made.
int hangDetectionMs
[Optional, Default: 2000] Number of milliseconds that must pass before a hang is assumed.
int slowExecutionThresholdMs
[Optional, Default: 100] Maximum number of milliseconds that a task may take before being considered ...
bool abortOnHang
[Optional, Default: true] If true, aborts the process if a hang is detected.
bool enabled
[Optional, Default: true] Enables/disables a watchdog.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * OID_RTS_PEM
Rally Tactical Systems' PEN as assigned by IANA.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * OID_RTS_CERT_SUBJ_ACCESS_TAGS
The link to the Rallypoint is down.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_SERIAL
The Rallypoint denied the registration request because the far-end's certificate serial number has be...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_SECURITY_CLASSIFICATION_LEVEL_TOO_HIGH
The Rallypoint has denied the registration because the registration is for a security level not allow...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_ON_BLACKLIST
The Rallypoint denied the registration request because the far-end does appears in blackist criteria.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_FINGERPRINT
The Rallypoint denied the registration request because the far-end's certificate fingerprint has been...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_ISSUER
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_GENERAL_DENIAL
The Rallypoint has denied the registration for no specific reason.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_ACCESS_TAG
The Rallypoint denied the registration request because the far-end's certificate does not have an acc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_SUBJECT
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NOT_ALLOWED
The Rallypoint is not accepting registration for the group at this time.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_SUBJECT
The Rallypoint denied the registration request because the far-end's certificate subject has been exc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_LINK
The link to the Rallypoint is down.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_SERIAL
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_FINGERPRINT
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_ISSUER
The Rallypoint denied the registration request because the far-end's certificate issuer has been excl...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_ACCESS_TAG
The Rallypoint denied the registration request because the far-end's certificate does not have an acc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_UNREGISTERED
The group has been gracefully unregistered from the Rallypoint.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_REAON
No particular reason was provided.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NOT_ON_WHITELIST
The Rallypoint denied the registration request because the far-end does not appear in any whitelist c...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_DOMO
The source is Domo Tactical via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_CISTECH
The source is CISTECH via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_CORE
The source is a Magellan-capable entity.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_INTERNAL
Internal to Engage.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_TAIT
The source is Tait via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_TRELLISWARE
The source is Trellisware via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_SILVUS
The source is Silvus via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_VOCALITY
The source is Vocality via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_PERSISTENT
The source is Persistent Systems via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_KENWOOD
The source is Kenwood via Magellan discovery.
static const uint8_t ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE
The default RTP payload type Engage uses for RTP blob messaging.