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);
454 JSON_SERIALIZED_CLASS(FipsCryptoSettings)
457 IMPLEMENT_JSON_SERIALIZATION()
482 virtual void initForDocumenting()
488 static void to_json(nlohmann::json& j,
const FipsCryptoSettings& p)
491 TOJSON_IMPL(enabled),
496 static void from_json(
const nlohmann::json& j, FipsCryptoSettings& p)
499 FROMJSON_IMPL_SIMPLE(enabled);
500 FROMJSON_IMPL_SIMPLE(path);
501 FROMJSON_IMPL_SIMPLE(debug);
506 JSON_SERIALIZED_CLASS(WatchdogSettings)
509 IMPLEMENT_JSON_SERIALIZATION()
537 hangDetectionMs = 2000;
539 slowExecutionThresholdMs = 100;
542 virtual void initForDocumenting()
548 static void to_json(nlohmann::json& j,
const WatchdogSettings& p)
551 TOJSON_IMPL(enabled),
552 TOJSON_IMPL(intervalMs),
553 TOJSON_IMPL(hangDetectionMs),
554 TOJSON_IMPL(abortOnHang),
555 TOJSON_IMPL(slowExecutionThresholdMs)
558 static void from_json(
const nlohmann::json& j, WatchdogSettings& p)
561 getOptional<bool>(
"enabled", p.enabled, j,
true);
562 getOptional<int>(
"intervalMs", p.intervalMs, j, 5000);
563 getOptional<int>(
"hangDetectionMs", p.hangDetectionMs, j, 2000);
564 getOptional<bool>(
"abortOnHang", p.abortOnHang, j,
true);
565 getOptional<int>(
"slowExecutionThresholdMs", p.slowExecutionThresholdMs, j, 100);
570 JSON_SERIALIZED_CLASS(FileRecordingRequest)
573 IMPLEMENT_JSON_SERIALIZATION()
578 std::string fileName;
593 virtual void initForDocumenting()
596 id =
"1-2-3-4-5-6-7-8-9";
597 fileName =
"/tmp/test.wav";
606 TOJSON_IMPL(fileName),
610 static void from_json(
const nlohmann::json& j, FileRecordingRequest& p)
613 j.at(
"id").get_to(p.id);
614 j.at(
"fileName").get_to(p.fileName);
615 getOptional<uint32_t>(
"maxMs", p.maxMs, j, 60000);
620 JSON_SERIALIZED_CLASS(Feature)
623 IMPLEMENT_JSON_SERIALIZATION()
624 IMPLEMENT_JSON_DOCUMENTATION(
Feature)
629 std::string description;
630 std::string comments;
649 virtual void initForDocumenting()
652 id =
"{af9540d1-3e86-4fa6-8b80-e26daecb61ab}";
653 name =
"A sample feature";
654 description =
"This is an example of a feature";
655 comments =
"These are comments for this feature";
661 static void to_json(nlohmann::json& j,
const Feature& p)
666 TOJSON_IMPL(description),
667 TOJSON_IMPL(comments),
672 static void from_json(
const nlohmann::json& j, Feature& p)
675 j.at(
"id").get_to(p.id);
676 getOptional(
"name", p.name, j);
677 getOptional(
"description", p.description, j);
678 getOptional(
"comments", p.comments, j);
679 getOptional(
"count", p.count, j, 0);
687 JSON_SERIALIZED_CLASS(Featureset)
690 IMPLEMENT_JSON_SERIALIZATION()
694 std::string signature;
696 std::vector<Feature> features;
706 lockToDeviceId =
false;
710 virtual void initForDocumenting()
713 signature =
"c39df3f36c6444e686e47e70fc45cf91e6ed2d8de62d4a1e89f507d567ff48aaabb1a70e54b44377b46fc4a1a2e319e5b77e4abffc444db98f8eb55d709aad5f";
714 lockToDeviceId =
false;
718 static void to_json(nlohmann::json& j,
const Featureset& p)
721 TOJSON_IMPL(signature),
722 TOJSON_IMPL(lockToDeviceId),
723 TOJSON_IMPL(features)
726 static void from_json(
const nlohmann::json& j, Featureset& p)
729 getOptional(
"signature", p.signature, j);
730 getOptional<bool>(
"lockToDeviceId", p.lockToDeviceId, j,
false);
731 getOptional<std::vector<Feature>>(
"features", p.features, j);
736 JSON_SERIALIZED_CLASS(Agc)
747 IMPLEMENT_JSON_SERIALIZATION()
748 IMPLEMENT_JSON_DOCUMENTATION(
Agc)
779 compressionGainDb = 25;
780 enableLimiter =
false;
785 static void to_json(nlohmann::json& j,
const Agc& p)
788 TOJSON_IMPL(enabled),
789 TOJSON_IMPL(minLevel),
790 TOJSON_IMPL(maxLevel),
791 TOJSON_IMPL(compressionGainDb),
792 TOJSON_IMPL(enableLimiter),
793 TOJSON_IMPL(targetLevelDb)
796 static void from_json(
const nlohmann::json& j, Agc& p)
799 getOptional<bool>(
"enabled", p.enabled, j,
false);
800 getOptional<int>(
"minLevel", p.minLevel, j, 0);
801 getOptional<int>(
"maxLevel", p.maxLevel, j, 255);
802 getOptional<int>(
"compressionGainDb", p.compressionGainDb, j, 25);
803 getOptional<bool>(
"enableLimiter", p.enableLimiter, j,
false);
804 getOptional<int>(
"targetLevelDb", p.targetLevelDb, j, 3);
809 JSON_SERIALIZED_CLASS(RtpPayloadTypeTranslation)
820 IMPLEMENT_JSON_SERIALIZATION()
841 bool matches(
const RtpPayloadTypeTranslation& other)
843 return ( (external == other.external) && (engage == other.engage) );
847 static void to_json(nlohmann::json& j,
const RtpPayloadTypeTranslation& p)
850 TOJSON_IMPL(external),
854 static void from_json(
const nlohmann::json& j, RtpPayloadTypeTranslation& p)
857 getOptional<uint16_t>(
"external", p.external, j);
858 getOptional<uint16_t>(
"engage", p.engage, j);
862 JSON_SERIALIZED_CLASS(NetworkInterfaceDevice)
865 IMPLEMENT_JSON_SERIALIZATION()
870 std::string friendlyName;
871 std::string description;
876 bool supportsMulticast;
877 std::string hardwareAddress;
887 friendlyName.clear();
893 supportsMulticast =
false;
894 hardwareAddress.clear();
897 virtual void initForDocumenting()
901 friendlyName =
"Wi-Fi";
902 description =
"A wi-fi adapter";
904 address =
"127.0.0.1";
907 supportsMulticast =
false;
908 hardwareAddress =
"DE:AD:BE:EF:01:02:03";
916 TOJSON_IMPL(friendlyName),
917 TOJSON_IMPL(description),
919 TOJSON_IMPL(address),
920 TOJSON_IMPL(available),
921 TOJSON_IMPL(isLoopback),
922 TOJSON_IMPL(supportsMulticast),
923 TOJSON_IMPL(hardwareAddress)
926 static void from_json(
const nlohmann::json& j, NetworkInterfaceDevice& p)
929 getOptional(
"name", p.name, j);
930 getOptional(
"friendlyName", p.friendlyName, j);
931 getOptional(
"description", p.description, j);
932 getOptional(
"family", p.family, j, -1);
933 getOptional(
"address", p.address, j);
934 getOptional(
"available", p.available, j,
false);
935 getOptional(
"isLoopback", p.isLoopback, j,
false);
936 getOptional(
"supportsMulticast", p.supportsMulticast, j,
false);
937 getOptional(
"hardwareAddress", p.hardwareAddress, j);
941 JSON_SERIALIZED_CLASS(ListOfNetworkInterfaceDevice)
944 IMPLEMENT_JSON_SERIALIZATION()
948 std::vector<NetworkInterfaceDevice> list;
967 static void from_json(
const nlohmann::json& j, ListOfNetworkInterfaceDevice& p)
970 getOptional<std::vector<NetworkInterfaceDevice>>(
"list", p.list, j);
975 JSON_SERIALIZED_CLASS(RtpHeader)
986 IMPLEMENT_JSON_SERIALIZATION()
1020 virtual void initForDocumenting()
1031 static void to_json(nlohmann::json& j,
const RtpHeader& p)
1037 TOJSON_IMPL(marker),
1044 static void from_json(
const nlohmann::json& j, RtpHeader& p)
1047 getOptional<int>(
"pt", p.pt, j, -1);
1048 getOptional<bool>(
"marker", p.marker, j,
false);
1049 getOptional<uint16_t>(
"seq", p.seq, j, 0);
1050 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
1051 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1055 JSON_SERIALIZED_CLASS(BlobInfo)
1066 IMPLEMENT_JSON_SERIALIZATION()
1067 IMPLEMENT_JSON_DOCUMENTATION(
BlobInfo)
1082 bptJsonTextUtf8 = 2,
1088 bptEngageBinaryHumanBiometrics = 4,
1091 bptAppMimeMessage = 5,
1094 bptEngageInternal = 42
1123 payloadType = PayloadType_t::bptUndefined;
1126 virtual void initForDocumenting()
1129 rtpHeader.initForDocumenting();
1133 static void to_json(nlohmann::json& j,
const BlobInfo& p)
1137 TOJSON_IMPL(source),
1138 TOJSON_IMPL(target),
1139 TOJSON_IMPL(rtpHeader),
1140 TOJSON_IMPL(payloadType)
1143 static void from_json(
const nlohmann::json& j, BlobInfo& p)
1146 getOptional<size_t>(
"size", p.size, j, 0);
1147 getOptional<std::string>(
"source", p.source, j, EMPTY_STRING);
1148 getOptional<std::string>(
"target", p.target, j, EMPTY_STRING);
1149 getOptional<RtpHeader>(
"rtpHeader", p.rtpHeader, j);
1150 getOptional<BlobInfo::PayloadType_t>(
"payloadType", p.payloadType, j, BlobInfo::PayloadType_t::bptUndefined);
1155 JSON_SERIALIZED_CLASS(TxAudioUri)
1169 IMPLEMENT_JSON_SERIALIZATION()
1190 virtual void initForDocumenting()
1195 static void to_json(nlohmann::json& j,
const TxAudioUri& p)
1199 TOJSON_IMPL(repeatCount)
1202 static void from_json(
const nlohmann::json& j, TxAudioUri& p)
1205 getOptional<std::string>(
"uri", p.uri, j, EMPTY_STRING);
1206 getOptional<int>(
"repeatCount", p.repeatCount, j, 0);
1211 JSON_SERIALIZED_CLASS(AdvancedTxParams)
1225 IMPLEMENT_JSON_SERIALIZATION()
1270 includeNodeId =
false;
1275 aliasSpecializer = 0;
1276 receiverRxMuteForAliasSpecializer =
false;
1279 virtual void initForDocumenting()
1284 static void to_json(nlohmann::json& j,
const AdvancedTxParams& p)
1288 TOJSON_IMPL(priority),
1289 TOJSON_IMPL(subchannelTag),
1290 TOJSON_IMPL(includeNodeId),
1294 TOJSON_IMPL(audioUri),
1295 TOJSON_IMPL(aliasSpecializer),
1296 TOJSON_IMPL(receiverRxMuteForAliasSpecializer)
1299 static void from_json(
const nlohmann::json& j, AdvancedTxParams& p)
1302 getOptional<uint16_t>(
"flags", p.flags, j, 0);
1303 getOptional<uint8_t>(
"priority", p.priority, j, 0);
1304 getOptional<uint16_t>(
"subchannelTag", p.subchannelTag, j, 0);
1305 getOptional<bool>(
"includeNodeId", p.includeNodeId, j,
false);
1306 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
1307 getOptional<bool>(
"muted", p.muted, j,
false);
1308 getOptional<uint32_t>(
"txId", p.txId, j, 0);
1309 getOptional<TxAudioUri>(
"audioUri", p.audioUri, j);
1310 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
1311 getOptional<bool>(
"receiverRxMuteForAliasSpecializer", p.receiverRxMuteForAliasSpecializer, j,
false);
1315 JSON_SERIALIZED_CLASS(Identity)
1329 IMPLEMENT_JSON_SERIALIZATION()
1330 IMPLEMENT_JSON_DOCUMENTATION(
Identity)
1360 displayName.clear();
1364 virtual void initForDocumenting()
1369 static void to_json(nlohmann::json& j,
const Identity& p)
1372 TOJSON_IMPL(nodeId),
1373 TOJSON_IMPL(userId),
1374 TOJSON_IMPL(displayName),
1378 static void from_json(
const nlohmann::json& j, Identity& p)
1381 getOptional<std::string>(
"nodeId", p.nodeId, j);
1382 getOptional<std::string>(
"userId", p.userId, j);
1383 getOptional<std::string>(
"displayName", p.displayName, j);
1384 getOptional<std::string>(
"avatar", p.avatar, j);
1389 JSON_SERIALIZED_CLASS(Location)
1403 IMPLEMENT_JSON_SERIALIZATION()
1404 IMPLEMENT_JSON_DOCUMENTATION(
Location)
1407 constexpr static double INVALID_LOCATION_VALUE = -999.999;
1435 latitude = INVALID_LOCATION_VALUE;
1436 longitude = INVALID_LOCATION_VALUE;
1437 altitude = INVALID_LOCATION_VALUE;
1438 direction = INVALID_LOCATION_VALUE;
1439 speed = INVALID_LOCATION_VALUE;
1442 virtual void initForDocumenting()
1448 longitude = 456.789;
1455 static void to_json(nlohmann::json& j,
const Location& p)
1457 if(p.latitude != Location::INVALID_LOCATION_VALUE && p.longitude != Location::INVALID_LOCATION_VALUE)
1460 TOJSON_IMPL(latitude),
1461 TOJSON_IMPL(longitude),
1464 if(p.ts != 0) j[
"ts"] = p.ts;
1465 if(p.altitude != Location::INVALID_LOCATION_VALUE) j[
"altitude"] = p.altitude;
1466 if(p.speed != Location::INVALID_LOCATION_VALUE) j[
"speed"] = p.speed;
1467 if(p.direction != Location::INVALID_LOCATION_VALUE) j[
"direction"] = p.direction;
1470 static void from_json(
const nlohmann::json& j, Location& p)
1473 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1474 j.at(
"latitude").get_to(p.latitude);
1475 j.at(
"longitude").get_to(p.longitude);
1476 getOptional<double>(
"altitude", p.altitude, j, Location::INVALID_LOCATION_VALUE);
1477 getOptional<double>(
"direction", p.direction, j, Location::INVALID_LOCATION_VALUE);
1478 getOptional<double>(
"speed", p.speed, j, Location::INVALID_LOCATION_VALUE);
1482 JSON_SERIALIZED_CLASS(Power)
1494 IMPLEMENT_JSON_SERIALIZATION()
1495 IMPLEMENT_JSON_DOCUMENTATION(
Power)
1541 virtual void initForDocumenting()
1546 static void to_json(nlohmann::json& j,
const Power& p)
1548 if(p.source != 0 && p.state != 0 && p.level != 0)
1551 TOJSON_IMPL(source),
1557 static void from_json(
const nlohmann::json& j, Power& p)
1560 getOptional<int>(
"source", p.source, j, 0);
1561 getOptional<int>(
"state", p.state, j, 0);
1562 getOptional<int>(
"level", p.level, j, 0);
1567 JSON_SERIALIZED_CLASS(Connectivity)
1579 IMPLEMENT_JSON_SERIALIZATION()
1616 virtual void initForDocumenting()
1626 static void to_json(nlohmann::json& j,
const Connectivity& p)
1632 TOJSON_IMPL(strength),
1637 static void from_json(
const nlohmann::json& j, Connectivity& p)
1640 getOptional<int>(
"type", p.type, j, 0);
1641 getOptional<int>(
"strength", p.strength, j, 0);
1642 getOptional<int>(
"rating", p.rating, j, 0);
1647 JSON_SERIALIZED_CLASS(PresenceDescriptorGroupItem)
1659 IMPLEMENT_JSON_SERIALIZATION()
1684 virtual void initForDocumenting()
1686 groupId =
"{123-456}";
1692 static void to_json(nlohmann::json& j,
const PresenceDescriptorGroupItem& p)
1695 TOJSON_IMPL(groupId),
1700 static void from_json(
const nlohmann::json& j, PresenceDescriptorGroupItem& p)
1703 getOptional<std::string>(
"groupId", p.groupId, j);
1704 getOptional<std::string>(
"alias", p.alias, j);
1705 getOptional<uint16_t>(
"status", p.status, j);
1710 JSON_SERIALIZED_CLASS(PresenceDescriptor)
1722 IMPLEMENT_JSON_SERIALIZATION()
1800 groupAliases.clear();
1803 announceOnReceive =
false;
1804 connectivity.clear();
1808 virtual void initForDocumenting()
1815 identity.initForDocumenting();
1816 comment =
"This is a comment";
1819 PresenceDescriptorGroupItem gi;
1820 gi.initForDocumenting();
1821 groupAliases.push_back(gi);
1823 location.initForDocumenting();
1825 announceOnReceive =
true;
1826 connectivity.initForDocumenting();
1827 power.initForDocumenting();
1831 static void to_json(nlohmann::json& j,
const PresenceDescriptor& p)
1835 TOJSON_IMPL(nextUpdate),
1836 TOJSON_IMPL(identity),
1837 TOJSON_IMPL(comment),
1838 TOJSON_IMPL(disposition),
1839 TOJSON_IMPL(groupAliases),
1840 TOJSON_IMPL(location),
1841 TOJSON_IMPL(custom),
1842 TOJSON_IMPL(announceOnReceive),
1843 TOJSON_IMPL(connectivity),
1847 if(!p.comment.empty()) j[
"comment"] = p.comment;
1848 if(!p.custom.empty()) j[
"custom"] = p.custom;
1855 static void from_json(
const nlohmann::json& j, PresenceDescriptor& p)
1858 getOptional<bool>(
"self", p.self, j);
1859 getOptional<uint32_t>(
"ts", p.ts, j);
1860 getOptional<uint32_t>(
"nextUpdate", p.nextUpdate, j);
1861 getOptional<Identity>(
"identity", p.identity, j);
1862 getOptional<std::string>(
"comment", p.comment, j);
1863 getOptional<uint32_t>(
"disposition", p.disposition, j);
1864 getOptional<std::vector<PresenceDescriptorGroupItem>>(
"groupAliases", p.groupAliases, j);
1865 getOptional<Location>(
"location", p.location, j);
1866 getOptional<std::string>(
"custom", p.custom, j);
1867 getOptional<bool>(
"announceOnReceive", p.announceOnReceive, j);
1868 getOptional<Connectivity>(
"connectivity", p.connectivity, j);
1869 getOptional<Power>(
"power", p.power, j);
1910 } AddressResolutionPolicy_t;
1913 JSON_SERIALIZED_CLASS(NetworkTxOptions)
1927 IMPLEMENT_JSON_SERIALIZATION()
1952 virtual void initForDocumenting()
1957 static void to_json(nlohmann::json& j,
const NetworkTxOptions& p)
1960 TOJSON_IMPL(priority),
1964 static void from_json(
const nlohmann::json& j, NetworkTxOptions& p)
1967 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
1968 getOptional<int>(
"ttl", p.ttl, j, 1);
1973 JSON_SERIALIZED_CLASS(TcpNetworkTxOptions)
1983 IMPLEMENT_JSON_SERIALIZATION()
1998 virtual void initForDocumenting()
2006 TOJSON_IMPL(priority),
2010 static void from_json(
const nlohmann::json& j, TcpNetworkTxOptions& p)
2013 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2014 getOptional<int>(
"ttl", p.ttl, j, -1);
2030 JSON_SERIALIZED_CLASS(NetworkAddress)
2043 IMPLEMENT_JSON_SERIALIZATION()
2064 bool matches(
const NetworkAddress& other)
2066 if(address.compare(other.address) != 0)
2071 if(port != other.port)
2080 static void to_json(nlohmann::json& j,
const NetworkAddress& p)
2083 TOJSON_IMPL(address),
2087 static void from_json(
const nlohmann::json& j, NetworkAddress& p)
2090 getOptional<std::string>(
"address", p.address, j);
2091 getOptional<int>(
"port", p.port, j);
2096 JSON_SERIALIZED_CLASS(NetworkAddressRxTx)
2109 IMPLEMENT_JSON_SERIALIZATION()
2131 static void to_json(nlohmann::json& j,
const NetworkAddressRxTx& p)
2138 static void from_json(
const nlohmann::json& j, NetworkAddressRxTx& p)
2141 getOptional<NetworkAddress>(
"rx", p.rx, j);
2142 getOptional<NetworkAddress>(
"tx", p.tx, j);
2153 } GroupRestrictionAccessPolicyType_t;
2155 static bool isValidGroupRestrictionAccessPolicyType(GroupRestrictionAccessPolicyType_t t)
2157 return (t == GroupRestrictionAccessPolicyType_t::graptPermissive ||
2158 t == GroupRestrictionAccessPolicyType_t::graptStrict );
2172 } RestrictionType_t;
2174 static bool isValidRestrictionType(RestrictionType_t t)
2176 return (t == RestrictionType_t::rtUndefined ||
2177 t == RestrictionType_t::rtWhitelist ||
2178 t == RestrictionType_t::rtBlacklist );
2204 } RestrictionElementType_t;
2206 static bool isValidRestrictionElementType(RestrictionElementType_t t)
2208 return (t == RestrictionElementType_t::retGroupId ||
2209 t == RestrictionElementType_t::retGroupIdPattern ||
2210 t == RestrictionElementType_t::retGenericAccessTagPattern ||
2211 t == RestrictionElementType_t::retCertificateSerialNumberPattern ||
2212 t == RestrictionElementType_t::retCertificateFingerprintPattern ||
2213 t == RestrictionElementType_t::retCertificateSubjectPattern ||
2214 t == RestrictionElementType_t::retCertificateIssuerPattern);
2219 JSON_SERIALIZED_CLASS(NetworkAddressRestrictionList)
2232 IMPLEMENT_JSON_SERIALIZATION()
2249 type = RestrictionType_t::rtUndefined;
2254 static void to_json(nlohmann::json& j,
const NetworkAddressRestrictionList& p)
2258 TOJSON_IMPL(elements)
2261 static void from_json(
const nlohmann::json& j, NetworkAddressRestrictionList& p)
2264 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2265 getOptional<std::vector<NetworkAddressRxTx>>(
"elements", p.elements, j);
2269 JSON_SERIALIZED_CLASS(StringRestrictionList)
2282 IMPLEMENT_JSON_SERIALIZATION()
2297 type = RestrictionType_t::rtUndefined;
2298 elementsType = RestrictionElementType_t::retGroupId;
2308 static void to_json(nlohmann::json& j,
const StringRestrictionList& p)
2312 TOJSON_IMPL(elementsType),
2313 TOJSON_IMPL(elements)
2316 static void from_json(
const nlohmann::json& j, StringRestrictionList& p)
2319 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2320 getOptional<RestrictionElementType_t>(
"elementsType", p.elementsType, j, RestrictionElementType_t::retGroupId);
2321 getOptional<std::vector<std::string>>(
"elements", p.elements, j);
2326 JSON_SERIALIZED_CLASS(PacketCapturer)
2337 IMPLEMENT_JSON_SERIALIZATION()
2343 std::string filePrefix;
2361 TOJSON_IMPL(enabled),
2363 TOJSON_IMPL(filePrefix)
2366 static void from_json(
const nlohmann::json& j, PacketCapturer& p)
2369 getOptional<bool>(
"enabled", p.enabled, j,
false);
2370 getOptional<uint32_t>(
"maxMb", p.maxMb, j, 10);
2371 getOptional<std::string>(
"filePrefix", p.filePrefix, j, EMPTY_STRING);
2376 JSON_SERIALIZED_CLASS(TransportImpairment)
2387 IMPLEMENT_JSON_SERIALIZATION()
2391 int applicationPercentage;
2402 applicationPercentage = 0;
2411 TOJSON_IMPL(applicationPercentage),
2412 TOJSON_IMPL(jitterMs),
2413 TOJSON_IMPL(lossPercentage)
2416 static void from_json(
const nlohmann::json& j, TransportImpairment& p)
2419 getOptional<int>(
"applicationPercentage", p.applicationPercentage, j, 0);
2420 getOptional<int>(
"jitterMs", p.jitterMs, j, 0);
2421 getOptional<int>(
"lossPercentage", p.lossPercentage, j, 0);
2425 JSON_SERIALIZED_CLASS(NsmNetworking)
2436 IMPLEMENT_JSON_SERIALIZATION()
2440 std::string interfaceName;
2447 std::string cryptoPassword;
2456 interfaceName.clear();
2461 rxImpairment.clear();
2462 txImpairment.clear();
2463 cryptoPassword.clear();
2467 static void to_json(nlohmann::json& j,
const NsmNetworking& p)
2470 TOJSON_IMPL(interfaceName),
2471 TOJSON_IMPL(address),
2474 TOJSON_IMPL(txOversend),
2475 TOJSON_IMPL(rxImpairment),
2476 TOJSON_IMPL(txImpairment),
2477 TOJSON_IMPL(cryptoPassword)
2480 static void from_json(
const nlohmann::json& j, NsmNetworking& p)
2483 getOptional(
"interfaceName", p.interfaceName, j, EMPTY_STRING);
2484 getOptional<NetworkAddress>(
"address", p.address, j);
2485 getOptional<int>(
"ttl", p.ttl, j, 1);
2486 getOptional<int>(
"tos", p.tos, j, 56);
2487 getOptional<int>(
"txOversend", p.txOversend, j, 0);
2488 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
2489 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
2490 getOptional(
"cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
2495 JSON_SERIALIZED_CLASS(NsmConfiguration)
2506 IMPLEMENT_JSON_SERIALIZATION()
2514 std::vector<std::string> resources;
2518 int transitionSecsFactor;
2528 favorUptime =
false;
2531 tokenStart = 1000000;
2534 transitionSecsFactor = 3;
2542 TOJSON_IMPL(favorUptime),
2543 TOJSON_IMPL(networking),
2544 TOJSON_IMPL(resources),
2545 TOJSON_IMPL(tokenStart),
2546 TOJSON_IMPL(tokenEnd),
2547 TOJSON_IMPL(intervalSecs),
2548 TOJSON_IMPL(transitionSecsFactor)
2551 static void from_json(
const nlohmann::json& j, NsmConfiguration& p)
2554 getOptional(
"id", p.id, j);
2555 getOptional<bool>(
"favorUptime", p.favorUptime, j,
false);
2556 getOptional<NsmNetworking>(
"networking", p.networking, j);
2557 getOptional<std::vector<std::string>>(
"resources", p.resources, j);
2558 getOptional<int>(
"tokenStart", p.tokenStart, j, 1000000);
2559 getOptional<int>(
"tokenEnd", p.tokenEnd, j, 2000000);
2560 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
2561 getOptional<int>(
"transitionSecsFactor", p.transitionSecsFactor, j, 3);
2566 JSON_SERIALIZED_CLASS(Rallypoint)
2576 IMPLEMENT_JSON_SERIALIZATION()
2652 certificate.clear();
2653 certificateKey.clear();
2654 caCertificates.clear();
2656 transactionTimeoutMs = 5000;
2657 disableMessageSigning =
false;
2658 connectionTimeoutSecs = 5;
2659 tcpTxOptions.clear();
2662 bool matches(
const Rallypoint& other)
2664 if(!host.matches(other.host))
2669 if(certificate.compare(other.certificate) != 0)
2674 if(certificateKey.compare(other.certificateKey) != 0)
2679 if(verifyPeer != other.verifyPeer)
2684 if(allowSelfSignedCertificate != other.allowSelfSignedCertificate)
2689 if(caCertificates.size() != other.caCertificates.size())
2694 for(
size_t x = 0; x < caCertificates.size(); x++)
2698 for(
size_t y = 0; y < other.caCertificates.size(); y++)
2700 if(caCertificates[x].compare(other.caCertificates[y]) == 0)
2713 if(transactionTimeoutMs != other.transactionTimeoutMs)
2718 if(disableMessageSigning != other.disableMessageSigning)
2727 static void to_json(nlohmann::json& j,
const Rallypoint& p)
2731 TOJSON_IMPL(certificate),
2732 TOJSON_IMPL(certificateKey),
2733 TOJSON_IMPL(verifyPeer),
2734 TOJSON_IMPL(allowSelfSignedCertificate),
2735 TOJSON_IMPL(caCertificates),
2736 TOJSON_IMPL(transactionTimeoutMs),
2737 TOJSON_IMPL(disableMessageSigning),
2738 TOJSON_IMPL(connectionTimeoutSecs),
2739 TOJSON_IMPL(tcpTxOptions)
2743 static void from_json(
const nlohmann::json& j, Rallypoint& p)
2746 j.at(
"host").get_to(p.host);
2747 getOptional(
"certificate", p.certificate, j);
2748 getOptional(
"certificateKey", p.certificateKey, j);
2749 getOptional<bool>(
"verifyPeer", p.verifyPeer, j,
true);
2750 getOptional<bool>(
"allowSelfSignedCertificate", p.allowSelfSignedCertificate, j,
false);
2751 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
2752 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 5000);
2753 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
2754 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
2755 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
2759 JSON_SERIALIZED_CLASS(RallypointCluster)
2772 IMPLEMENT_JSON_SERIALIZATION()
2788 } ConnectionStrategy_t;
2809 connectionStrategy = csRoundRobin;
2810 rallypoints.clear();
2812 connectionTimeoutSecs = 5;
2816 static void to_json(nlohmann::json& j,
const RallypointCluster& p)
2819 TOJSON_IMPL(connectionStrategy),
2820 TOJSON_IMPL(rallypoints),
2821 TOJSON_IMPL(rolloverSecs),
2822 TOJSON_IMPL(connectionTimeoutSecs)
2825 static void from_json(
const nlohmann::json& j, RallypointCluster& p)
2828 getOptional<RallypointCluster::ConnectionStrategy_t>(
"connectionStrategy", p.connectionStrategy, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
2829 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
2830 getOptional<int>(
"rolloverSecs", p.rolloverSecs, j, 10);
2831 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
2836 JSON_SERIALIZED_CLASS(NetworkDeviceDescriptor)
2848 IMPLEMENT_JSON_SERIALIZATION()
2889 manufacturer.clear();
2892 serialNumber.clear();
2897 virtual std::string toString()
2901 snprintf(buff,
sizeof(buff),
"deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
2904 manufacturer.c_str(),
2907 serialNumber.c_str(),
2911 return std::string(buff);
2915 static void to_json(nlohmann::json& j,
const NetworkDeviceDescriptor& p)
2918 TOJSON_IMPL(deviceId),
2920 TOJSON_IMPL(manufacturer),
2922 TOJSON_IMPL(hardwareId),
2923 TOJSON_IMPL(serialNumber),
2928 static void from_json(
const nlohmann::json& j, NetworkDeviceDescriptor& p)
2931 getOptional<int>(
"deviceId", p.deviceId, j, 0);
2932 getOptional(
"name", p.name, j);
2933 getOptional(
"manufacturer", p.manufacturer, j);
2934 getOptional(
"model", p.model, j);
2935 getOptional(
"hardwareId", p.hardwareId, j);
2936 getOptional(
"serialNumber", p.serialNumber, j);
2937 getOptional(
"type", p.type, j);
2938 getOptional(
"extra", p.extra, j);
2942 JSON_SERIALIZED_CLASS(AudioGate)
2953 IMPLEMENT_JSON_SERIALIZATION()
2992 static void to_json(nlohmann::json& j,
const AudioGate& p)
2995 TOJSON_IMPL(enabled),
2996 TOJSON_IMPL(useVad),
2997 TOJSON_IMPL(hangMs),
2998 TOJSON_IMPL(windowMin),
2999 TOJSON_IMPL(windowMax),
3000 TOJSON_IMPL(coefficient)
3003 static void from_json(
const nlohmann::json& j, AudioGate& p)
3006 getOptional<bool>(
"enabled", p.enabled, j,
false);
3007 getOptional<bool>(
"useVad", p.useVad, j,
false);
3008 getOptional<uint32_t>(
"hangMs", p.hangMs, j, 1500);
3009 getOptional<uint32_t>(
"windowMin", p.windowMin, j, 25);
3010 getOptional<uint32_t>(
"windowMax", p.windowMax, j, 125);
3011 getOptional<double>(
"coefficient", p.coefficient, j, 1.75);
3015 JSON_SERIALIZED_CLASS(TxAudio)
3030 IMPLEMENT_JSON_SERIALIZATION()
3031 IMPLEMENT_JSON_DOCUMENTATION(
TxAudio)
3267 encoder = TxAudio::TxCodec_t::ctUnknown;
3268 encoderName.clear();
3274 extensionSendInterval = 10;
3275 initialHeaderBurst = 5;
3276 trailingHeaderBurst = 5;
3277 startTxNotifications = 5;
3278 customRtpPayloadType = -1;
3280 resetRtpOnTx =
true;
3281 enableSmoothing =
true;
3283 smoothedHangTimeMs = 0;
3287 static void to_json(nlohmann::json& j,
const TxAudio& p)
3290 TOJSON_IMPL(enabled),
3291 TOJSON_IMPL(encoder),
3292 TOJSON_IMPL(encoderName),
3293 TOJSON_IMPL(framingMs),
3294 TOJSON_IMPL(blockCount),
3296 TOJSON_IMPL(noHdrExt),
3297 TOJSON_IMPL(maxTxSecs),
3298 TOJSON_IMPL(extensionSendInterval),
3299 TOJSON_IMPL(initialHeaderBurst),
3300 TOJSON_IMPL(trailingHeaderBurst),
3301 TOJSON_IMPL(startTxNotifications),
3302 TOJSON_IMPL(customRtpPayloadType),
3303 TOJSON_IMPL(resetRtpOnTx),
3304 TOJSON_IMPL(enableSmoothing),
3306 TOJSON_IMPL(smoothedHangTimeMs)
3311 static void from_json(
const nlohmann::json& j, TxAudio& p)
3314 getOptional<bool>(
"enabled", p.enabled, j,
true);
3315 getOptional<TxAudio::TxCodec_t>(
"encoder", p.encoder, j, TxAudio::TxCodec_t::ctOpus8000);
3316 getOptional<std::string>(
"encoderName", p.encoderName, j, EMPTY_STRING);
3317 getOptional(
"framingMs", p.framingMs, j, 60);
3318 getOptional(
"blockCount", p.blockCount, j, 0);
3319 getOptional(
"fdx", p.fdx, j,
false);
3320 getOptional(
"noHdrExt", p.noHdrExt, j,
false);
3321 getOptional(
"maxTxSecs", p.maxTxSecs, j, 0);
3322 getOptional(
"extensionSendInterval", p.extensionSendInterval, j, 10);
3323 getOptional(
"initialHeaderBurst", p.initialHeaderBurst, j, 5);
3324 getOptional(
"trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3325 getOptional(
"startTxNotifications", p.startTxNotifications, j, 5);
3326 getOptional(
"customRtpPayloadType", p.customRtpPayloadType, j, -1);
3327 getOptional(
"resetRtpOnTx", p.resetRtpOnTx, j,
true);
3328 getOptional(
"enableSmoothing", p.enableSmoothing, j,
true);
3329 getOptional(
"dtx", p.dtx, j,
false);
3330 getOptional(
"smoothedHangTimeMs", p.smoothedHangTimeMs, j, 0);
3336 JSON_SERIALIZED_CLASS(AudioDeviceDescriptor)
3348 IMPLEMENT_JSON_SERIALIZATION()
3442 direction = dirUnknown;
3443 boostPercentage = 0;
3448 manufacturer.clear();
3451 serialNumber.clear();
3457 virtual std::string toString()
3461 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",
3469 manufacturer.c_str(),
3472 serialNumber.c_str(),
3478 return std::string(buff);
3482 static void to_json(nlohmann::json& j,
const AudioDeviceDescriptor& p)
3485 TOJSON_IMPL(deviceId),
3486 TOJSON_IMPL(samplingRate),
3487 TOJSON_IMPL(channels),
3488 TOJSON_IMPL(direction),
3489 TOJSON_IMPL(boostPercentage),
3490 TOJSON_IMPL(isAdad),
3492 TOJSON_IMPL(manufacturer),
3494 TOJSON_IMPL(hardwareId),
3495 TOJSON_IMPL(serialNumber),
3496 TOJSON_IMPL(isDefault),
3499 TOJSON_IMPL(isPresent)
3502 static void from_json(
const nlohmann::json& j, AudioDeviceDescriptor& p)
3505 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3506 getOptional<int>(
"samplingRate", p.samplingRate, j, 0);
3507 getOptional<int>(
"channels", p.channels, j, 0);
3508 getOptional<AudioDeviceDescriptor::Direction_t>(
"direction", p.direction, j,
3509 AudioDeviceDescriptor::Direction_t::dirUnknown);
3510 getOptional<int>(
"boostPercentage", p.boostPercentage, j, 0);
3512 getOptional<bool>(
"isAdad", p.isAdad, j,
false);
3513 getOptional(
"name", p.name, j);
3514 getOptional(
"manufacturer", p.manufacturer, j);
3515 getOptional(
"model", p.model, j);
3516 getOptional(
"hardwareId", p.hardwareId, j);
3517 getOptional(
"serialNumber", p.serialNumber, j);
3518 getOptional(
"isDefault", p.isDefault, j);
3519 getOptional(
"type", p.type, j);
3520 getOptional(
"extra", p.extra, j);
3521 getOptional<bool>(
"isPresent", p.isPresent, j,
false);
3525 JSON_SERIALIZED_CLASS(ListOfAudioDeviceDescriptor)
3528 IMPLEMENT_JSON_SERIALIZATION()
3532 std::vector<AudioDeviceDescriptor> list;
3551 static void from_json(
const nlohmann::json& j, ListOfAudioDeviceDescriptor& p)
3554 getOptional<std::vector<AudioDeviceDescriptor>>(
"list", p.list, j);
3558 JSON_SERIALIZED_CLASS(Audio)
3568 IMPLEMENT_JSON_SERIALIZATION()
3569 IMPLEMENT_JSON_DOCUMENTATION(
Audio)
3608 outputLevelLeft = 100;
3609 outputLevelRight = 100;
3610 outputMuted =
false;
3614 static void to_json(nlohmann::json& j,
const Audio& p)
3617 TOJSON_IMPL(enabled),
3618 TOJSON_IMPL(inputId),
3619 TOJSON_IMPL(inputGain),
3620 TOJSON_IMPL(outputId),
3621 TOJSON_IMPL(outputLevelLeft),
3622 TOJSON_IMPL(outputLevelRight),
3623 TOJSON_IMPL(outputMuted)
3626 static void from_json(
const nlohmann::json& j, Audio& p)
3629 getOptional<bool>(
"enabled", p.enabled, j,
true);
3630 getOptional<int>(
"inputId", p.inputId, j, 0);
3631 getOptional<int>(
"inputGain", p.inputGain, j, 0);
3632 getOptional<int>(
"outputId", p.outputId, j, 0);
3633 getOptional<int>(
"outputGain", p.outputGain, j, 0);
3634 getOptional<int>(
"outputLevelLeft", p.outputLevelLeft, j, 100);
3635 getOptional<int>(
"outputLevelRight", p.outputLevelRight, j, 100);
3636 getOptional<bool>(
"outputMuted", p.outputMuted, j,
false);
3640 JSON_SERIALIZED_CLASS(TalkerInformation)
3652 IMPLEMENT_JSON_SERIALIZATION()
3694 aliasSpecializer = 0;
3699 static void to_json(nlohmann::json& j,
const TalkerInformation& p)
3703 TOJSON_IMPL(nodeId),
3704 TOJSON_IMPL(rxFlags),
3705 TOJSON_IMPL(txPriority),
3707 TOJSON_IMPL(duplicateCount),
3708 TOJSON_IMPL(aliasSpecializer),
3709 TOJSON_IMPL(rxMuted)
3712 static void from_json(
const nlohmann::json& j, TalkerInformation& p)
3715 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
3716 getOptional<std::string>(
"nodeId", p.nodeId, j, EMPTY_STRING);
3717 getOptional<uint16_t>(
"rxFlags", p.rxFlags, j, 0);
3718 getOptional<int>(
"txPriority", p.txPriority, j, 0);
3719 getOptional<uint32_t>(
"txId", p.txId, j, 0);
3720 getOptional<int>(
"duplicateCount", p.duplicateCount, j, 0);
3721 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
3722 getOptional<bool>(
"rxMuted", p.rxMuted, j,
false);
3726 JSON_SERIALIZED_CLASS(GroupTalkers)
3740 IMPLEMENT_JSON_SERIALIZATION()
3745 std::vector<TalkerInformation>
list;
3758 static void to_json(nlohmann::json& j,
const GroupTalkers& p)
3764 static void from_json(
const nlohmann::json& j, GroupTalkers& p)
3767 getOptional<std::vector<TalkerInformation>>(
"list", p.list, j);
3771 JSON_SERIALIZED_CLASS(Presence)
3783 IMPLEMENT_JSON_SERIALIZATION()
3784 IMPLEMENT_JSON_DOCUMENTATION(
Presence)
3829 minIntervalSecs = 5;
3833 static void to_json(nlohmann::json& j,
const Presence& p)
3836 TOJSON_IMPL(format),
3837 TOJSON_IMPL(intervalSecs),
3838 TOJSON_IMPL(listenOnly),
3839 TOJSON_IMPL(minIntervalSecs)
3842 static void from_json(
const nlohmann::json& j, Presence& p)
3845 getOptional<Presence::Format_t>(
"format", p.format, j, Presence::Format_t::pfEngage);
3846 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 30);
3847 getOptional<bool>(
"listenOnly", p.listenOnly, j,
false);
3848 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 5);
3853 JSON_SERIALIZED_CLASS(Advertising)
3865 IMPLEMENT_JSON_SERIALIZATION()
3887 alwaysAdvertise =
false;
3891 static void to_json(nlohmann::json& j,
const Advertising& p)
3894 TOJSON_IMPL(enabled),
3895 TOJSON_IMPL(intervalMs),
3896 TOJSON_IMPL(alwaysAdvertise)
3899 static void from_json(
const nlohmann::json& j, Advertising& p)
3902 getOptional(
"enabled", p.enabled, j,
false);
3903 getOptional<int>(
"intervalMs", p.intervalMs, j, 20000);
3904 getOptional<bool>(
"alwaysAdvertise", p.alwaysAdvertise, j,
false);
3908 JSON_SERIALIZED_CLASS(GroupPriorityTranslation)
3920 IMPLEMENT_JSON_SERIALIZATION()
3946 static void to_json(nlohmann::json& j,
const GroupPriorityTranslation& p)
3951 TOJSON_IMPL(priority)
3954 static void from_json(
const nlohmann::json& j, GroupPriorityTranslation& p)
3957 j.at(
"rx").get_to(p.rx);
3958 j.at(
"tx").get_to(p.tx);
3959 FROMJSON_IMPL(priority,
int, 0);
3963 JSON_SERIALIZED_CLASS(GroupTimeline)
3977 IMPLEMENT_JSON_SERIALIZATION()
3996 maxAudioTimeMs = 30000;
4001 static void to_json(nlohmann::json& j,
const GroupTimeline& p)
4004 TOJSON_IMPL(enabled),
4005 TOJSON_IMPL(maxAudioTimeMs),
4006 TOJSON_IMPL(recordAudio)
4009 static void from_json(
const nlohmann::json& j, GroupTimeline& p)
4012 getOptional(
"enabled", p.enabled, j,
true);
4013 getOptional<int>(
"maxAudioTimeMs", p.maxAudioTimeMs, j, 30000);
4014 getOptional(
"recordAudio", p.recordAudio, j,
true);
4117 IMPLEMENT_JSON_SERIALIZATION()
4139 static void to_json(nlohmann::json& j,
const GroupAppTransport& p)
4142 TOJSON_IMPL(enabled),
4146 static void from_json(
const nlohmann::json& j, GroupAppTransport& p)
4149 getOptional<bool>(
"enabled", p.enabled, j,
false);
4150 getOptional<std::string>(
"id", p.id, j);
4154 JSON_SERIALIZED_CLASS(RtpProfile)
4166 IMPLEMENT_JSON_SERIALIZATION()
4184 jmReleaseOnTxEnd = 2
4247 jitterMaxMs = 10000;
4249 jitterMaxFactor = 8;
4250 jitterTrimPercentage = 10;
4251 jitterUnderrunReductionThresholdMs = 1500;
4252 jitterUnderrunReductionAger = 100;
4253 latePacketSequenceRange = 5;
4254 latePacketTimestampRangeMs = 2000;
4255 inboundProcessorInactivityMs = 500;
4256 jitterForceTrimAtMs = 0;
4257 rtcpPresenceTimeoutMs = 45000;
4258 jitterMaxExceededClipPerc = 10;
4259 jitterMaxExceededClipHangMs = 1500;
4260 zombieLifetimeMs = 15000;
4261 jitterMaxTrimMs = 250;
4262 signalledInboundProcessorInactivityMs = (inboundProcessorInactivityMs * 4);
4266 static void to_json(nlohmann::json& j,
const RtpProfile& p)
4270 TOJSON_IMPL(jitterMaxMs),
4271 TOJSON_IMPL(inboundProcessorInactivityMs),
4272 TOJSON_IMPL(jitterMinMs),
4273 TOJSON_IMPL(jitterMaxFactor),
4274 TOJSON_IMPL(jitterTrimPercentage),
4275 TOJSON_IMPL(jitterUnderrunReductionThresholdMs),
4276 TOJSON_IMPL(jitterUnderrunReductionAger),
4277 TOJSON_IMPL(latePacketSequenceRange),
4278 TOJSON_IMPL(latePacketTimestampRangeMs),
4279 TOJSON_IMPL(inboundProcessorInactivityMs),
4280 TOJSON_IMPL(jitterForceTrimAtMs),
4281 TOJSON_IMPL(jitterMaxExceededClipPerc),
4282 TOJSON_IMPL(jitterMaxExceededClipHangMs),
4283 TOJSON_IMPL(zombieLifetimeMs),
4284 TOJSON_IMPL(jitterMaxTrimMs),
4285 TOJSON_IMPL(signalledInboundProcessorInactivityMs)
4288 static void from_json(
const nlohmann::json& j, RtpProfile& p)
4291 FROMJSON_IMPL(mode, RtpProfile::JitterMode_t, RtpProfile::JitterMode_t::jmStandard);
4292 FROMJSON_IMPL(jitterMaxMs,
int, 10000);
4293 FROMJSON_IMPL(jitterMinMs,
int, 20);
4294 FROMJSON_IMPL(jitterMaxFactor,
int, 8);
4295 FROMJSON_IMPL(jitterTrimPercentage,
int, 10);
4296 FROMJSON_IMPL(jitterUnderrunReductionThresholdMs,
int, 1500);
4297 FROMJSON_IMPL(jitterUnderrunReductionAger,
int, 100);
4298 FROMJSON_IMPL(latePacketSequenceRange,
int, 5);
4299 FROMJSON_IMPL(latePacketTimestampRangeMs,
int, 2000);
4300 FROMJSON_IMPL(inboundProcessorInactivityMs,
int, 500);
4301 FROMJSON_IMPL(jitterForceTrimAtMs,
int, 0);
4302 FROMJSON_IMPL(rtcpPresenceTimeoutMs,
int, 45000);
4303 FROMJSON_IMPL(jitterMaxExceededClipPerc,
int, 10);
4304 FROMJSON_IMPL(jitterMaxExceededClipHangMs,
int, 1500);
4305 FROMJSON_IMPL(zombieLifetimeMs,
int, 15000);
4306 FROMJSON_IMPL(jitterMaxTrimMs,
int, 250);
4307 FROMJSON_IMPL(signalledInboundProcessorInactivityMs,
int, (p.inboundProcessorInactivityMs * 4));
4311 JSON_SERIALIZED_CLASS(Tls)
4323 IMPLEMENT_JSON_SERIALIZATION()
4324 IMPLEMENT_JSON_DOCUMENTATION(
Tls)
4354 allowSelfSignedCertificates =
false;
4355 caCertificates.clear();
4356 subjectRestrictions.clear();
4357 issuerRestrictions.clear();
4362 static void to_json(nlohmann::json& j,
const Tls& p)
4365 TOJSON_IMPL(verifyPeers),
4366 TOJSON_IMPL(allowSelfSignedCertificates),
4367 TOJSON_IMPL(caCertificates),
4368 TOJSON_IMPL(subjectRestrictions),
4369 TOJSON_IMPL(issuerRestrictions),
4370 TOJSON_IMPL(crlSerials)
4373 static void from_json(
const nlohmann::json& j, Tls& p)
4376 getOptional<bool>(
"verifyPeers", p.verifyPeers, j,
true);
4377 getOptional<bool>(
"allowSelfSignedCertificates", p.allowSelfSignedCertificates, j,
false);
4378 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
4379 getOptional<StringRestrictionList>(
"subjectRestrictions", p.subjectRestrictions, j);
4380 getOptional<StringRestrictionList>(
"issuerRestrictions", p.issuerRestrictions, j);
4381 getOptional<std::vector<std::string>>(
"crlSerials", p.crlSerials, j);
4385 JSON_SERIALIZED_CLASS(RangerPackets)
4399 IMPLEMENT_JSON_SERIALIZATION()
4420 virtual void initForDocumenting()
4425 static void to_json(nlohmann::json& j,
const RangerPackets& p)
4428 TOJSON_IMPL(hangTimerSecs),
4432 static void from_json(
const nlohmann::json& j, RangerPackets& p)
4435 getOptional<int>(
"hangTimerSecs", p.hangTimerSecs, j, 11);
4436 getOptional<int>(
"count", p.count, j, 5);
4440 JSON_SERIALIZED_CLASS(Source)
4454 IMPLEMENT_JSON_SERIALIZATION()
4455 IMPLEMENT_JSON_DOCUMENTATION(
Source)
4462 uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
4468 uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
4478 memset(_internal_binary_nodeId, 0,
sizeof(_internal_binary_nodeId));
4481 memset(_internal_binary_alias, 0,
sizeof(_internal_binary_alias));
4484 virtual void initForDocumenting()
4489 static void to_json(nlohmann::json& j,
const Source& p)
4492 TOJSON_IMPL(nodeId),
4496 static void from_json(
const nlohmann::json& j, Source& p)
4499 FROMJSON_IMPL_SIMPLE(nodeId);
4500 FROMJSON_IMPL_SIMPLE(alias);
4504 JSON_SERIALIZED_CLASS(Group)
4517 IMPLEMENT_JSON_SERIALIZATION()
4518 IMPLEMENT_JSON_DOCUMENTATION(
Group)
4545 bomPayloadTransformation = 1,
4548 bomAnonymousMixing = 2,
4551 bomLanguageTranslation = 3
4558 iagpAnonymousAlias = 0,
4562 } InboundAliasGenerationPolicy_t;
4738 interfaceName.clear();
4744 cryptoPassword.clear();
4748 rallypoints.clear();
4749 rallypointCluster.clear();
4754 blockAdvertising =
false;
4760 enableMulticastFailover =
false;
4761 multicastFailoverSecs = 10;
4763 rtcpPresenceRx.clear();
4765 presenceGroupAffinities.clear();
4766 disablePacketEvents =
false;
4768 rfc4733RtpPayloadId = 0;
4769 inboundRtpPayloadTypeTranslations.clear();
4770 priorityTranslation.clear();
4772 stickyTidHangSecs = 10;
4773 anonymousAlias.clear();
4776 appTransport.clear();
4777 allowLoopback =
false;
4780 rangerPackets.clear();
4782 _wasDeserialized_rtpProfile =
false;
4784 txImpairment.clear();
4785 rxImpairment.clear();
4787 specializerAffinities.clear();
4791 ignoreSources.clear();
4793 languageCode.clear();
4800 inboundAliasGenerationPolicy = iagpAnonymousAlias;
4803 ignoreAudioTraffic =
false;
4807 static void to_json(nlohmann::json& j,
const Group& p)
4814 TOJSON_IMPL(spokenName),
4815 TOJSON_IMPL(interfaceName),
4818 TOJSON_IMPL(txOptions),
4819 TOJSON_IMPL(txAudio),
4820 TOJSON_IMPL(presence),
4821 TOJSON_IMPL(cryptoPassword),
4830 TOJSON_IMPL(timeline),
4831 TOJSON_IMPL(blockAdvertising),
4832 TOJSON_IMPL(source),
4833 TOJSON_IMPL(maxRxSecs),
4834 TOJSON_IMPL(enableMulticastFailover),
4835 TOJSON_IMPL(multicastFailoverSecs),
4836 TOJSON_IMPL(rtcpPresenceRx),
4837 TOJSON_IMPL(presenceGroupAffinities),
4838 TOJSON_IMPL(disablePacketEvents),
4839 TOJSON_IMPL(rfc4733RtpPayloadId),
4840 TOJSON_IMPL(inboundRtpPayloadTypeTranslations),
4841 TOJSON_IMPL(priorityTranslation),
4842 TOJSON_IMPL(stickyTidHangSecs),
4843 TOJSON_IMPL(anonymousAlias),
4844 TOJSON_IMPL(lbCrypto),
4845 TOJSON_IMPL(appTransport),
4846 TOJSON_IMPL(allowLoopback),
4847 TOJSON_IMPL(rangerPackets),
4849 TOJSON_IMPL(txImpairment),
4850 TOJSON_IMPL(rxImpairment),
4852 TOJSON_IMPL(specializerAffinities),
4854 TOJSON_IMPL(securityLevel),
4856 TOJSON_IMPL(ignoreSources),
4858 TOJSON_IMPL(languageCode),
4859 TOJSON_IMPL(synVoice),
4861 TOJSON_IMPL(rxCapture),
4862 TOJSON_IMPL(txCapture),
4864 TOJSON_IMPL(blobRtpPayloadType),
4866 TOJSON_IMPL(inboundAliasGenerationPolicy),
4868 TOJSON_IMPL(gateIn),
4870 TOJSON_IMPL(ignoreAudioTraffic)
4876 if(p._wasDeserialized_rtpProfile || p.isDocumenting())
4878 j[
"rtpProfile"] = p.rtpProfile;
4881 if(p.isDocumenting())
4883 j[
"rallypointCluster"] = p.rallypointCluster;
4884 j[
"rallypoints"] = p.rallypoints;
4889 if(!p.rallypointCluster.rallypoints.empty())
4891 j[
"rallypointCluster"] = p.rallypointCluster;
4893 else if(!p.rallypoints.empty())
4895 j[
"rallypoints"] = p.rallypoints;
4899 static void from_json(
const nlohmann::json& j, Group& p)
4902 j.at(
"type").get_to(p.type);
4903 getOptional<Group::BridgingOpMode_t>(
"bom", p.bom, j, Group::BridgingOpMode_t::bomRaw);
4904 j.at(
"id").get_to(p.id);
4905 getOptional<std::string>(
"name", p.name, j);
4906 getOptional<std::string>(
"spokenName", p.spokenName, j);
4907 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
4908 getOptional<NetworkAddress>(
"rx", p.rx, j);
4909 getOptional<NetworkAddress>(
"tx", p.tx, j);
4910 getOptional<NetworkTxOptions>(
"txOptions", p.txOptions, j);
4911 getOptional<std::string>(
"cryptoPassword", p.cryptoPassword, j);
4912 getOptional<std::string>(
"alias", p.alias, j);
4913 getOptional<TxAudio>(
"txAudio", p.txAudio, j);
4914 getOptional<Presence>(
"presence", p.presence, j);
4915 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
4916 getOptional<RallypointCluster>(
"rallypointCluster", p.rallypointCluster, j);
4917 getOptional<Audio>(
"audio", p.audio, j);
4918 getOptional<GroupTimeline>(
"timeline", p.timeline, j);
4919 getOptional<bool>(
"blockAdvertising", p.blockAdvertising, j,
false);
4920 getOptional<std::string>(
"source", p.source, j);
4921 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
4922 getOptional<bool>(
"enableMulticastFailover", p.enableMulticastFailover, j,
false);
4923 getOptional<int>(
"multicastFailoverSecs", p.multicastFailoverSecs, j, 10);
4924 getOptional<NetworkAddress>(
"rtcpPresenceRx", p.rtcpPresenceRx, j);
4925 getOptional<std::vector<std::string>>(
"presenceGroupAffinities", p.presenceGroupAffinities, j);
4926 getOptional<bool>(
"disablePacketEvents", p.disablePacketEvents, j,
false);
4927 getOptional<int>(
"rfc4733RtpPayloadId", p.rfc4733RtpPayloadId, j, 0);
4928 getOptional<std::vector<RtpPayloadTypeTranslation>>(
"inboundRtpPayloadTypeTranslations", p.inboundRtpPayloadTypeTranslations, j);
4929 getOptional<GroupPriorityTranslation>(
"priorityTranslation", p.priorityTranslation, j);
4930 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
4931 getOptional<std::string>(
"anonymousAlias", p.anonymousAlias, j);
4932 getOptional<bool>(
"lbCrypto", p.lbCrypto, j,
false);
4933 getOptional<GroupAppTransport>(
"appTransport", p.appTransport, j);
4934 getOptional<bool>(
"allowLoopback", p.allowLoopback, j,
false);
4935 getOptionalWithIndicator<RtpProfile>(
"rtpProfile", p.rtpProfile, j, &p._wasDeserialized_rtpProfile);
4936 getOptional<RangerPackets>(
"rangerPackets", p.rangerPackets, j);
4937 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
4938 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
4939 getOptional<std::vector<uint16_t>>(
"specializerAffinities", p.specializerAffinities, j);
4940 getOptional<uint32_t>(
"securityLevel", p.securityLevel, j, 0);
4941 getOptional<std::vector<Source>>(
"ignoreSources", p.ignoreSources, j);
4942 getOptional<std::string>(
"languageCode", p.languageCode, j);
4943 getOptional<std::string>(
"synVoice", p.synVoice, j);
4945 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
4946 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
4950 getOptional<Group::InboundAliasGenerationPolicy_t>(
"inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
4952 getOptional<AudioGate>(
"gateIn", p.gateIn, j);
4954 getOptional<bool>(
"ignoreAudioTraffic", p.ignoreAudioTraffic, j,
false);
4956 FROMJSON_BASE_IMPL();
4961 JSON_SERIALIZED_CLASS(Mission)
4964 IMPLEMENT_JSON_SERIALIZATION()
4965 IMPLEMENT_JSON_DOCUMENTATION(
Mission)
4970 std::vector<Group> groups;
4971 std::chrono::system_clock::time_point begins;
4972 std::chrono::system_clock::time_point ends;
4973 std::string certStoreId;
4974 int multicastFailoverPolicy;
4982 certStoreId.clear();
4983 multicastFailoverPolicy = 0;
4988 static void to_json(nlohmann::json& j,
const Mission& p)
4993 TOJSON_IMPL(groups),
4994 TOJSON_IMPL(certStoreId),
4995 TOJSON_IMPL(multicastFailoverPolicy),
4996 TOJSON_IMPL(rallypoint)
5000 static void from_json(
const nlohmann::json& j, Mission& p)
5003 j.at(
"id").get_to(p.id);
5004 j.at(
"name").get_to(p.name);
5009 j.at(
"groups").get_to(p.groups);
5016 FROMJSON_IMPL(certStoreId, std::string, EMPTY_STRING);
5017 FROMJSON_IMPL(multicastFailoverPolicy,
int, 0);
5018 getOptional<Rallypoint>(
"rallypoint", p.rallypoint, j);
5022 JSON_SERIALIZED_CLASS(LicenseDescriptor)
5034 IMPLEMENT_JSON_SERIALIZATION()
5043 static const int STATUS_OK = 0;
5044 static const int ERR_NULL_ENTITLEMENT_KEY = -1;
5045 static const int ERR_NULL_LICENSE_KEY = -2;
5046 static const int ERR_INVALID_LICENSE_KEY_LEN = -3;
5047 static const int ERR_LICENSE_KEY_VERIFICATION_FAILURE = -4;
5048 static const int ERR_ACTIVATION_CODE_VERIFICATION_FAILURE = -5;
5049 static const int ERR_INVALID_EXPIRATION_DATE = -6;
5050 static const int ERR_GENERAL_FAILURE = -7;
5051 static const int ERR_NOT_INITIALIZED = -8;
5052 static const int ERR_REQUIRES_ACTIVATION = -9;
5053 static const int ERR_LICENSE_NOT_SUITED_FOR_ACTIVATION = -10;
5061 static const uint8_t LIC_CARGO_FLAG_LIMIT_TO_FEATURES = 0x01;
5125 entitlement.clear();
5127 activationCode.clear();
5130 expiresFormatted.clear();
5135 status = ERR_NOT_INITIALIZED;
5136 manufacturerId.clear();
5140 static void to_json(nlohmann::json& j,
const LicenseDescriptor& p)
5144 {
"entitlement",
"*entitlement*"},
5146 TOJSON_IMPL(activationCode),
5148 TOJSON_IMPL(expires),
5149 TOJSON_IMPL(expiresFormatted),
5151 TOJSON_IMPL(deviceId),
5152 TOJSON_IMPL(status),
5154 {
"manufacturerId",
"*manufacturerId*"},
5156 TOJSON_IMPL(cargoFlags)
5160 static void from_json(
const nlohmann::json& j, LicenseDescriptor& p)
5163 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
5164 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5165 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
5166 FROMJSON_IMPL(type,
int, 0);
5167 FROMJSON_IMPL(expires, time_t, 0);
5168 FROMJSON_IMPL(expiresFormatted, std::string, EMPTY_STRING);
5169 FROMJSON_IMPL(flags, uint32_t, 0);
5170 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
5171 FROMJSON_IMPL(status,
int, LicenseDescriptor::ERR_NOT_INITIALIZED);
5172 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
5173 FROMJSON_IMPL(cargo, std::string, EMPTY_STRING);
5174 FROMJSON_IMPL(cargoFlags, uint8_t, 0);
5179 JSON_SERIALIZED_CLASS(EngineNetworkingRpUdpStreaming)
5193 IMPLEMENT_JSON_SERIALIZATION()
5221 keepaliveIntervalSecs = 15;
5222 priority = TxPriority_t::priVoice;
5226 virtual void initForDocumenting()
5231 static void to_json(nlohmann::json& j,
const EngineNetworkingRpUdpStreaming& p)
5234 TOJSON_IMPL(enabled),
5236 TOJSON_IMPL(keepaliveIntervalSecs),
5237 TOJSON_IMPL(priority),
5241 static void from_json(
const nlohmann::json& j, EngineNetworkingRpUdpStreaming& p)
5244 getOptional<bool>(
"enabled", p.enabled, j,
false);
5245 getOptional<int>(
"port", p.port, j, 0);
5246 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
5247 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
5248 getOptional<int>(
"ttl", p.ttl, j, 64);
5252 JSON_SERIALIZED_CLASS(EnginePolicyNetworking)
5263 IMPLEMENT_JSON_SERIALIZATION()
5299 multicastRejoinSecs = 8;
5300 rallypointRtTestIntervalMs = 60000;
5301 logRtpJitterBufferStats =
false;
5302 preventMulticastFailover =
false;
5303 addressResolutionPolicy = AddressResolutionPolicy_t::arpIpv6ThenIpv4;
5305 rpUdpStreaming.clear();
5310 static void to_json(nlohmann::json& j,
const EnginePolicyNetworking& p)
5313 TOJSON_IMPL(defaultNic),
5314 TOJSON_IMPL(multicastRejoinSecs),
5316 TOJSON_IMPL(rallypointRtTestIntervalMs),
5317 TOJSON_IMPL(logRtpJitterBufferStats),
5318 TOJSON_IMPL(preventMulticastFailover),
5320 TOJSON_IMPL(rpUdpStreaming),
5321 TOJSON_IMPL(rtpProfile),
5322 TOJSON_IMPL(addressResolutionPolicy)
5325 static void from_json(
const nlohmann::json& j, EnginePolicyNetworking& p)
5328 FROMJSON_IMPL(defaultNic, std::string, EMPTY_STRING);
5329 FROMJSON_IMPL(multicastRejoinSecs,
int, 8);
5330 FROMJSON_IMPL(rallypointRtTestIntervalMs,
int, 60000);
5331 FROMJSON_IMPL(logRtpJitterBufferStats,
bool,
false);
5332 FROMJSON_IMPL(preventMulticastFailover,
bool,
false);
5334 getOptional<EngineNetworkingRpUdpStreaming>(
"rpUdpStreaming", p.rpUdpStreaming, j);
5335 getOptional<RtpProfile>(
"rtpProfile", p.rtpProfile, j);
5336 getOptional<AddressResolutionPolicy_t>(
"addressResolutionPolicy", p.addressResolutionPolicy, j, AddressResolutionPolicy_t::arpIpv6ThenIpv4);
5340 JSON_SERIALIZED_CLASS(Aec)
5352 IMPLEMENT_JSON_SERIALIZATION()
5353 IMPLEMENT_JSON_DOCUMENTATION(
Aec)
5408 static void to_json(nlohmann::json& j,
const Aec& p)
5411 TOJSON_IMPL(enabled),
5413 TOJSON_IMPL(speakerTailMs),
5417 static void from_json(
const nlohmann::json& j, Aec& p)
5420 FROMJSON_IMPL(enabled,
bool,
false);
5421 FROMJSON_IMPL(mode, Aec::Mode_t, Aec::Mode_t::aecmDefault);
5422 FROMJSON_IMPL(speakerTailMs,
int, 60);
5423 FROMJSON_IMPL(cng,
bool,
true);
5427 JSON_SERIALIZED_CLASS(Vad)
5439 IMPLEMENT_JSON_SERIALIZATION()
5440 IMPLEMENT_JSON_DOCUMENTATION(
Vad)
5460 vamVeryAggressive = 3
5481 static void to_json(nlohmann::json& j,
const Vad& p)
5484 TOJSON_IMPL(enabled),
5488 static void from_json(
const nlohmann::json& j, Vad& p)
5491 FROMJSON_IMPL(enabled,
bool,
false);
5492 FROMJSON_IMPL(mode, Vad::Mode_t, Vad::Mode_t::vamDefault);
5496 JSON_SERIALIZED_CLASS(Bridge)
5508 IMPLEMENT_JSON_SERIALIZATION()
5509 IMPLEMENT_JSON_DOCUMENTATION(
Bridge)
5538 static void to_json(nlohmann::json& j,
const Bridge& p)
5543 TOJSON_IMPL(groups),
5544 TOJSON_IMPL(enabled)
5547 static void from_json(
const nlohmann::json& j, Bridge& p)
5550 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
5551 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
5552 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
5553 FROMJSON_IMPL(enabled,
bool,
true);
5557 JSON_SERIALIZED_CLASS(AndroidAudio)
5569 IMPLEMENT_JSON_SERIALIZATION()
5573 constexpr static int INVALID_SESSION_ID = -9999;
5634 performanceMode = 12;
5638 sessionId = AndroidAudio::INVALID_SESSION_ID;
5643 static void to_json(nlohmann::json& j,
const AndroidAudio& p)
5647 TOJSON_IMPL(sharingMode),
5648 TOJSON_IMPL(performanceMode),
5650 TOJSON_IMPL(contentType),
5651 TOJSON_IMPL(inputPreset),
5652 TOJSON_IMPL(sessionId),
5653 TOJSON_IMPL(engineMode)
5656 static void from_json(
const nlohmann::json& j, AndroidAudio& p)
5659 FROMJSON_IMPL(api,
int, 0);
5660 FROMJSON_IMPL(sharingMode,
int, 0);
5661 FROMJSON_IMPL(performanceMode,
int, 12);
5662 FROMJSON_IMPL(usage,
int, 2);
5663 FROMJSON_IMPL(contentType,
int, 1);
5664 FROMJSON_IMPL(inputPreset,
int, 7);
5665 FROMJSON_IMPL(sessionId,
int, AndroidAudio::INVALID_SESSION_ID);
5666 FROMJSON_IMPL(engineMode,
int, 0);
5670 JSON_SERIALIZED_CLASS(EnginePolicyAudio)
5682 IMPLEMENT_JSON_SERIALIZATION()
5730 hardwareEnabled =
true;
5731 internalRate = 16000;
5732 internalChannels = 2;
5739 denoiseInput =
false;
5740 denoiseOutput =
false;
5744 static void to_json(nlohmann::json& j,
const EnginePolicyAudio& p)
5747 TOJSON_IMPL(enabled),
5748 TOJSON_IMPL(hardwareEnabled),
5749 TOJSON_IMPL(internalRate),
5750 TOJSON_IMPL(internalChannels),
5751 TOJSON_IMPL(muteTxOnTx),
5754 TOJSON_IMPL(android),
5755 TOJSON_IMPL(inputAgc),
5756 TOJSON_IMPL(outputAgc),
5757 TOJSON_IMPL(denoiseInput),
5758 TOJSON_IMPL(denoiseOutput)
5761 static void from_json(
const nlohmann::json& j, EnginePolicyAudio& p)
5764 getOptional<bool>(
"enabled", p.enabled, j,
true);
5765 getOptional<bool>(
"hardwareEnabled", p.hardwareEnabled, j,
true);
5766 FROMJSON_IMPL(internalRate,
int, 16000);
5767 FROMJSON_IMPL(internalChannels,
int, 2);
5769 FROMJSON_IMPL(muteTxOnTx,
bool,
false);
5770 getOptional<Aec>(
"aec", p.aec, j);
5771 getOptional<Vad>(
"vad", p.vad, j);
5772 getOptional<AndroidAudio>(
"android", p.android, j);
5773 getOptional<Agc>(
"inputAgc", p.inputAgc, j);
5774 getOptional<Agc>(
"outputAgc", p.outputAgc, j);
5775 FROMJSON_IMPL(denoiseInput,
bool,
false);
5776 FROMJSON_IMPL(denoiseOutput,
bool,
false);
5780 JSON_SERIALIZED_CLASS(SecurityCertificate)
5792 IMPLEMENT_JSON_SERIALIZATION()
5814 certificate.clear();
5819 static void to_json(nlohmann::json& j,
const SecurityCertificate& p)
5822 TOJSON_IMPL(certificate),
5826 static void from_json(
const nlohmann::json& j, SecurityCertificate& p)
5829 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
5830 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5835 JSON_SERIALIZED_CLASS(EnginePolicySecurity)
5848 IMPLEMENT_JSON_SERIALIZATION()
5881 certificate.clear();
5882 caCertificates.clear();
5886 static void to_json(nlohmann::json& j,
const EnginePolicySecurity& p)
5889 TOJSON_IMPL(certificate),
5890 TOJSON_IMPL(caCertificates)
5893 static void from_json(
const nlohmann::json& j, EnginePolicySecurity& p)
5896 getOptional(
"certificate", p.certificate, j);
5897 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
5901 JSON_SERIALIZED_CLASS(EnginePolicyLogging)
5913 IMPLEMENT_JSON_SERIALIZATION()
5946 enableSyslog =
false;
5950 static void to_json(nlohmann::json& j,
const EnginePolicyLogging& p)
5953 TOJSON_IMPL(maxLevel),
5954 TOJSON_IMPL(enableSyslog)
5957 static void from_json(
const nlohmann::json& j, EnginePolicyLogging& p)
5960 getOptional(
"maxLevel", p.maxLevel, j, 4);
5961 getOptional(
"enableSyslog", p.enableSyslog, j);
5966 JSON_SERIALIZED_CLASS(EnginePolicyDatabase)
5969 IMPLEMENT_JSON_SERIALIZATION()
5980 DatabaseType_t type;
5981 std::string fixedFileName;
5982 bool forceMaintenance;
5992 type = DatabaseType_t::dbtFixedMemory;
5993 fixedFileName.clear();
5994 forceMaintenance =
false;
5995 reclaimSpace =
false;
6003 TOJSON_IMPL(fixedFileName),
6004 TOJSON_IMPL(forceMaintenance),
6005 TOJSON_IMPL(reclaimSpace)
6008 static void from_json(
const nlohmann::json& j, EnginePolicyDatabase& p)
6011 FROMJSON_IMPL(type, EnginePolicyDatabase::DatabaseType_t, EnginePolicyDatabase::DatabaseType_t::dbtFixedMemory);
6012 FROMJSON_IMPL(fixedFileName, std::string, EMPTY_STRING);
6013 FROMJSON_IMPL(forceMaintenance,
bool,
false);
6014 FROMJSON_IMPL(reclaimSpace,
bool,
false);
6019 JSON_SERIALIZED_CLASS(SecureSignature)
6029 IMPLEMENT_JSON_SERIALIZATION()
6050 certificate.clear();
6056 static void to_json(nlohmann::json& j,
const SecureSignature& p)
6059 TOJSON_IMPL(certificate),
6061 TOJSON_IMPL(signature)
6064 static void from_json(
const nlohmann::json& j, SecureSignature& p)
6067 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6069 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
6073 JSON_SERIALIZED_CLASS(NamedAudioDevice)
6076 IMPLEMENT_JSON_SERIALIZATION()
6081 std::string manufacturer;
6084 std::string serialNumber;
6097 manufacturer.clear();
6100 serialNumber.clear();
6111 TOJSON_IMPL(manufacturer),
6114 TOJSON_IMPL(serialNumber),
6117 TOJSON_IMPL(isDefault),
6120 static void from_json(
const nlohmann::json& j, NamedAudioDevice& p)
6123 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6124 getOptional<std::string>(
"manufacturer", p.manufacturer, j, EMPTY_STRING);
6125 getOptional<std::string>(
"model", p.model, j, EMPTY_STRING);
6126 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
6127 getOptional<std::string>(
"serialNumber", p.serialNumber, j, EMPTY_STRING);
6128 getOptional<std::string>(
"type", p.type, j, EMPTY_STRING);
6129 getOptional<std::string>(
"extra", p.extra, j, EMPTY_STRING);
6130 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
6135 JSON_SERIALIZED_CLASS(EnginePolicyNamedAudioDevices)
6138 IMPLEMENT_JSON_SERIALIZATION()
6142 std::vector<NamedAudioDevice> inputs;
6143 std::vector<NamedAudioDevice> outputs;
6160 TOJSON_IMPL(inputs),
6161 TOJSON_IMPL(outputs)
6164 static void from_json(
const nlohmann::json& j, EnginePolicyNamedAudioDevices& p)
6167 getOptional<std::vector<NamedAudioDevice>>(
"inputs", p.inputs, j);
6168 getOptional<std::vector<NamedAudioDevice>>(
"outputs", p.outputs, j);
6172 JSON_SERIALIZED_CLASS(Licensing)
6186 IMPLEMENT_JSON_SERIALIZATION()
6213 entitlement.clear();
6215 activationCode.clear();
6217 manufacturerId.clear();
6221 static void to_json(nlohmann::json& j,
const Licensing& p)
6224 TOJSON_IMPL(entitlement),
6226 TOJSON_IMPL(activationCode),
6227 TOJSON_IMPL(deviceId),
6228 TOJSON_IMPL(manufacturerId)
6231 static void from_json(
const nlohmann::json& j, Licensing& p)
6234 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
6235 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6236 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
6237 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
6238 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
6242 JSON_SERIALIZED_CLASS(DiscoveryMagellan)
6254 IMPLEMENT_JSON_SERIALIZATION()
6279 interfaceName.clear();
6285 static void to_json(nlohmann::json& j,
const DiscoveryMagellan& p)
6288 TOJSON_IMPL(enabled),
6289 TOJSON_IMPL(interfaceName),
6290 TOJSON_IMPL(security),
6294 static void from_json(
const nlohmann::json& j, DiscoveryMagellan& p)
6297 getOptional(
"enabled", p.enabled, j,
false);
6298 getOptional<Tls>(
"tls", p.tls, j);
6299 getOptional<SecurityCertificate>(
"security", p.security, j);
6300 FROMJSON_IMPL(interfaceName, std::string, EMPTY_STRING);
6304 JSON_SERIALIZED_CLASS(DiscoverySsdp)
6316 IMPLEMENT_JSON_SERIALIZATION()
6347 interfaceName.clear();
6349 searchTerms.clear();
6350 ageTimeoutMs = 30000;
6351 advertising.clear();
6355 static void to_json(nlohmann::json& j,
const DiscoverySsdp& p)
6358 TOJSON_IMPL(enabled),
6359 TOJSON_IMPL(interfaceName),
6360 TOJSON_IMPL(address),
6361 TOJSON_IMPL(searchTerms),
6362 TOJSON_IMPL(ageTimeoutMs),
6363 TOJSON_IMPL(advertising)
6366 static void from_json(
const nlohmann::json& j, DiscoverySsdp& p)
6369 getOptional(
"enabled", p.enabled, j,
false);
6370 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6372 getOptional<NetworkAddress>(
"address", p.address, j);
6373 if(p.address.address.empty())
6375 p.address.address =
"255.255.255.255";
6377 if(p.address.port <= 0)
6379 p.address.port = 1900;
6382 getOptional<std::vector<std::string>>(
"searchTerms", p.searchTerms, j);
6383 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6384 getOptional<Advertising>(
"advertising", p.advertising, j);
6388 JSON_SERIALIZED_CLASS(DiscoverySap)
6400 IMPLEMENT_JSON_SERIALIZATION()
6427 interfaceName.clear();
6429 ageTimeoutMs = 30000;
6430 advertising.clear();
6434 static void to_json(nlohmann::json& j,
const DiscoverySap& p)
6437 TOJSON_IMPL(enabled),
6438 TOJSON_IMPL(interfaceName),
6439 TOJSON_IMPL(address),
6440 TOJSON_IMPL(ageTimeoutMs),
6441 TOJSON_IMPL(advertising)
6444 static void from_json(
const nlohmann::json& j, DiscoverySap& p)
6447 getOptional(
"enabled", p.enabled, j,
false);
6448 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6449 getOptional<NetworkAddress>(
"address", p.address, j);
6450 if(p.address.address.empty())
6452 p.address.address =
"224.2.127.254";
6454 if(p.address.port <= 0)
6456 p.address.port = 9875;
6459 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6460 getOptional<Advertising>(
"advertising", p.advertising, j);
6464 JSON_SERIALIZED_CLASS(DiscoveryCistech)
6478 IMPLEMENT_JSON_SERIALIZATION()
6483 std::string interfaceName;
6495 interfaceName.clear();
6497 ageTimeoutMs = 30000;
6504 TOJSON_IMPL(enabled),
6505 TOJSON_IMPL(interfaceName),
6506 TOJSON_IMPL(address),
6507 TOJSON_IMPL(ageTimeoutMs)
6510 static void from_json(
const nlohmann::json& j, DiscoveryCistech& p)
6513 getOptional(
"enabled", p.enabled, j,
false);
6514 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6515 getOptional<NetworkAddress>(
"address", p.address, j);
6516 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6521 JSON_SERIALIZED_CLASS(DiscoveryTrellisware)
6533 IMPLEMENT_JSON_SERIALIZATION()
6556 static void to_json(nlohmann::json& j,
const DiscoveryTrellisware& p)
6559 TOJSON_IMPL(enabled),
6560 TOJSON_IMPL(security)
6563 static void from_json(
const nlohmann::json& j, DiscoveryTrellisware& p)
6566 getOptional(
"enabled", p.enabled, j,
false);
6567 getOptional<SecurityCertificate>(
"security", p.security, j);
6571 JSON_SERIALIZED_CLASS(DiscoveryConfiguration)
6583 IMPLEMENT_JSON_SERIALIZATION()
6616 static void to_json(nlohmann::json& j,
const DiscoveryConfiguration& p)
6619 TOJSON_IMPL(magellan),
6622 TOJSON_IMPL(cistech),
6623 TOJSON_IMPL(trellisware)
6626 static void from_json(
const nlohmann::json& j, DiscoveryConfiguration& p)
6629 getOptional<DiscoveryMagellan>(
"magellan", p.magellan, j);
6630 getOptional<DiscoverySsdp>(
"ssdp", p.ssdp, j);
6631 getOptional<DiscoverySap>(
"sap", p.sap, j);
6632 getOptional<DiscoveryCistech>(
"cistech", p.cistech, j);
6633 getOptional<DiscoveryTrellisware>(
"trellisware", p.trellisware, j);
6638 JSON_SERIALIZED_CLASS(EnginePolicyInternals)
6652 IMPLEMENT_JSON_SERIALIZATION()
6667 int logTaskQueueStatsIntervalMs;
6669 bool enableLazySpeakerClosure;
6700 housekeeperIntervalMs = 1000;
6701 logTaskQueueStatsIntervalMs = 0;
6704 enableLazySpeakerClosure =
false;
6705 rpClusterStrategy = RallypointCluster::ConnectionStrategy_t::csRoundRobin;
6706 rpClusterRolloverSecs = 10;
6707 rtpExpirationCheckIntervalMs = 250;
6708 rpConnectionTimeoutSecs = 5;
6709 stickyTidHangSecs = 10;
6710 uriStreamingIntervalMs = 60;
6711 delayedMicrophoneClosureSecs = 15;
6715 static void to_json(nlohmann::json& j,
const EnginePolicyInternals& p)
6718 TOJSON_IMPL(watchdog),
6719 TOJSON_IMPL(housekeeperIntervalMs),
6720 TOJSON_IMPL(logTaskQueueStatsIntervalMs),
6721 TOJSON_IMPL(maxTxSecs),
6722 TOJSON_IMPL(maxRxSecs),
6723 TOJSON_IMPL(enableLazySpeakerClosure),
6724 TOJSON_IMPL(rpClusterStrategy),
6725 TOJSON_IMPL(rpClusterRolloverSecs),
6726 TOJSON_IMPL(rtpExpirationCheckIntervalMs),
6727 TOJSON_IMPL(rpConnectionTimeoutSecs),
6728 TOJSON_IMPL(stickyTidHangSecs),
6729 TOJSON_IMPL(uriStreamingIntervalMs),
6730 TOJSON_IMPL(delayedMicrophoneClosureSecs)
6733 static void from_json(
const nlohmann::json& j, EnginePolicyInternals& p)
6736 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
6737 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
6738 getOptional<int>(
"logTaskQueueStatsIntervalMs", p.logTaskQueueStatsIntervalMs, j, 0);
6739 getOptional<int>(
"maxTxSecs", p.maxTxSecs, j, 30);
6740 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
6741 getOptional<bool>(
"enableLazySpeakerClosure", p.enableLazySpeakerClosure, j,
false);
6742 getOptional<RallypointCluster::ConnectionStrategy_t>(
"rpClusterStrategy", p.rpClusterStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
6743 getOptional<int>(
"rpClusterRolloverSecs", p.rpClusterRolloverSecs, j, 10);
6744 getOptional<int>(
"rtpExpirationCheckIntervalMs", p.rtpExpirationCheckIntervalMs, j, 250);
6745 getOptional<int>(
"rpConnectionTimeoutSecs", p.rpConnectionTimeoutSecs, j, 5);
6746 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
6747 getOptional<int>(
"uriStreamingIntervalMs", p.uriStreamingIntervalMs, j, 60);
6748 getOptional<int>(
"delayedMicrophoneClosureSecs", p.delayedMicrophoneClosureSecs, j, 15);
6752 JSON_SERIALIZED_CLASS(EnginePolicyTimelines)
6766 IMPLEMENT_JSON_SERIALIZATION()
6819 storageRoot.clear();
6820 maxStorageMb = 1024;
6821 maxEventAgeSecs = (86400 * 30);
6822 groomingIntervalSecs = (60 * 30);
6824 autosaveIntervalSecs = 5;
6826 disableSigningAndVerification =
false;
6831 static void to_json(nlohmann::json& j,
const EnginePolicyTimelines& p)
6834 TOJSON_IMPL(enabled),
6835 TOJSON_IMPL(storageRoot),
6836 TOJSON_IMPL(maxStorageMb),
6837 TOJSON_IMPL(maxEventAgeSecs),
6838 TOJSON_IMPL(maxEvents),
6839 TOJSON_IMPL(groomingIntervalSecs),
6840 TOJSON_IMPL(autosaveIntervalSecs),
6841 TOJSON_IMPL(security),
6842 TOJSON_IMPL(disableSigningAndVerification),
6843 TOJSON_IMPL(ephemeral)
6846 static void from_json(
const nlohmann::json& j, EnginePolicyTimelines& p)
6849 getOptional<bool>(
"enabled", p.enabled, j,
true);
6850 getOptional<std::string>(
"storageRoot", p.storageRoot, j, EMPTY_STRING);
6852 getOptional<int>(
"maxStorageMb", p.maxStorageMb, j, 1024);
6853 getOptional<long>(
"maxEventAgeSecs", p.maxEventAgeSecs, j, (86400 * 30));
6854 getOptional<long>(
"groomingIntervalSecs", p.groomingIntervalSecs, j, (60 * 30));
6855 getOptional<long>(
"autosaveIntervalSecs", p.autosaveIntervalSecs, j, 5);
6856 getOptional<int>(
"maxEvents", p.maxEvents, j, 1000);
6857 getOptional<SecurityCertificate>(
"security", p.security, j);
6858 getOptional<bool>(
"disableSigningAndVerification", p.disableSigningAndVerification, j,
false);
6859 getOptional<bool>(
"ephemeral", p.ephemeral, j,
false);
6864 JSON_SERIALIZED_CLASS(RtpMapEntry)
6876 IMPLEMENT_JSON_SERIALIZATION()
6898 rtpPayloadType = -1;
6902 static void to_json(nlohmann::json& j,
const RtpMapEntry& p)
6906 TOJSON_IMPL(engageType),
6907 TOJSON_IMPL(rtpPayloadType)
6910 static void from_json(
const nlohmann::json& j, RtpMapEntry& p)
6913 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6914 getOptional<int>(
"engageType", p.engageType, j, -1);
6915 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
6919 JSON_SERIALIZED_CLASS(ExternalModule)
6931 IMPLEMENT_JSON_SERIALIZATION()
6953 configuration.clear();
6957 static void to_json(nlohmann::json& j,
const ExternalModule& p)
6964 if(!p.configuration.empty())
6966 j[
"configuration"] = p.configuration;
6969 static void from_json(
const nlohmann::json& j, ExternalModule& p)
6972 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6973 getOptional<std::string>(
"file", p.file, j, EMPTY_STRING);
6977 p.configuration = j.at(
"configuration");
6981 p.configuration.clear();
6987 JSON_SERIALIZED_CLASS(ExternalCodecDescriptor)
6999 IMPLEMENT_JSON_SERIALIZATION()
7022 rtpPayloadType = -1;
7025 rtpTsMultiplier = 0;
7029 static void to_json(nlohmann::json& j,
const ExternalCodecDescriptor& p)
7032 TOJSON_IMPL(rtpPayloadType),
7033 TOJSON_IMPL(samplingRate),
7034 TOJSON_IMPL(channels),
7035 TOJSON_IMPL(rtpTsMultiplier)
7038 static void from_json(
const nlohmann::json& j, ExternalCodecDescriptor& p)
7042 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7043 getOptional<int>(
"samplingRate", p.samplingRate, j, -1);
7044 getOptional<int>(
"channels", p.channels, j, -1);
7045 getOptional<int>(
"rtpTsMultiplier", p.rtpTsMultiplier, j, -1);
7049 JSON_SERIALIZED_CLASS(EnginePolicy)
7063 IMPLEMENT_JSON_SERIALIZATION()
7117 dataDirectory.clear();
7128 namedAudioDevices.clear();
7129 externalCodecs.clear();
7134 static void to_json(nlohmann::json& j,
const EnginePolicy& p)
7137 TOJSON_IMPL(dataDirectory),
7138 TOJSON_IMPL(licensing),
7139 TOJSON_IMPL(security),
7140 TOJSON_IMPL(networking),
7142 TOJSON_IMPL(discovery),
7143 TOJSON_IMPL(logging),
7144 TOJSON_IMPL(internals),
7145 TOJSON_IMPL(timelines),
7146 TOJSON_IMPL(database),
7147 TOJSON_IMPL(featureset),
7148 TOJSON_IMPL(namedAudioDevices),
7149 TOJSON_IMPL(externalCodecs),
7153 static void from_json(
const nlohmann::json& j, EnginePolicy& p)
7156 FROMJSON_IMPL_SIMPLE(dataDirectory);
7157 FROMJSON_IMPL_SIMPLE(licensing);
7158 FROMJSON_IMPL_SIMPLE(security);
7159 FROMJSON_IMPL_SIMPLE(networking);
7160 FROMJSON_IMPL_SIMPLE(audio);
7161 FROMJSON_IMPL_SIMPLE(discovery);
7162 FROMJSON_IMPL_SIMPLE(logging);
7163 FROMJSON_IMPL_SIMPLE(internals);
7164 FROMJSON_IMPL_SIMPLE(timelines);
7165 FROMJSON_IMPL_SIMPLE(database);
7166 FROMJSON_IMPL_SIMPLE(featureset);
7167 FROMJSON_IMPL_SIMPLE(namedAudioDevices);
7168 FROMJSON_IMPL_SIMPLE(externalCodecs);
7169 FROMJSON_IMPL_SIMPLE(rtpMap);
7174 JSON_SERIALIZED_CLASS(TalkgroupAsset)
7186 IMPLEMENT_JSON_SERIALIZATION()
7209 static void to_json(nlohmann::json& j,
const TalkgroupAsset& p)
7212 TOJSON_IMPL(nodeId),
7216 static void from_json(
const nlohmann::json& j, TalkgroupAsset& p)
7219 getOptional<std::string>(
"nodeId", p.nodeId, j);
7220 getOptional<Group>(
"group", p.group, j);
7224 JSON_SERIALIZED_CLASS(EngageDiscoveredGroup)
7234 IMPLEMENT_JSON_SERIALIZATION()
7264 static void to_json(nlohmann::json& j,
const EngageDiscoveredGroup& p)
7273 static void from_json(
const nlohmann::json& j, EngageDiscoveredGroup& p)
7276 getOptional<std::string>(
"id", p.id, j);
7277 getOptional<int>(
"type", p.type, j, 0);
7278 getOptional<NetworkAddress>(
"rx", p.rx, j);
7279 getOptional<NetworkAddress>(
"tx", p.tx, j);
7283 JSON_SERIALIZED_CLASS(RallypointPeer)
7295 IMPLEMENT_JSON_SERIALIZATION()
7327 certificate.clear();
7328 connectionTimeoutSecs = 0;
7329 forceIsMeshLeaf =
false;
7333 static void to_json(nlohmann::json& j,
const RallypointPeer& p)
7337 TOJSON_IMPL(enabled),
7339 TOJSON_IMPL(certificate),
7340 TOJSON_IMPL(connectionTimeoutSecs),
7341 TOJSON_IMPL(forceIsMeshLeaf)
7344 static void from_json(
const nlohmann::json& j, RallypointPeer& p)
7347 j.at(
"id").get_to(p.id);
7348 getOptional<bool>(
"enabled", p.enabled, j,
true);
7349 getOptional<NetworkAddress>(
"host", p.host, j);
7350 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
7351 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
7352 getOptional<bool>(
"forceIsMeshLeaf", p.forceIsMeshLeaf, j,
false);
7356 JSON_SERIALIZED_CLASS(RallypointServerLimits)
7368 IMPLEMENT_JSON_SERIALIZATION()
7426 maxMulticastReflectors = 0;
7427 maxRegisteredStreams = 0;
7429 maxRxPacketsPerSec = 0;
7430 maxTxPacketsPerSec = 0;
7431 maxRxBytesPerSec = 0;
7432 maxTxBytesPerSec = 0;
7434 maxInboundBacklog = 64;
7435 lowPriorityQueueThreshold = 64;
7436 normalPriorityQueueThreshold = 256;
7437 denyNewConnectionCpuThreshold = 75;
7438 warnAtCpuThreshold = 65;
7442 static void to_json(nlohmann::json& j,
const RallypointServerLimits& p)
7445 TOJSON_IMPL(maxClients),
7446 TOJSON_IMPL(maxPeers),
7447 TOJSON_IMPL(maxMulticastReflectors),
7448 TOJSON_IMPL(maxRegisteredStreams),
7449 TOJSON_IMPL(maxStreamPaths),
7450 TOJSON_IMPL(maxRxPacketsPerSec),
7451 TOJSON_IMPL(maxTxPacketsPerSec),
7452 TOJSON_IMPL(maxRxBytesPerSec),
7453 TOJSON_IMPL(maxTxBytesPerSec),
7454 TOJSON_IMPL(maxQOpsPerSec),
7455 TOJSON_IMPL(maxInboundBacklog),
7456 TOJSON_IMPL(lowPriorityQueueThreshold),
7457 TOJSON_IMPL(normalPriorityQueueThreshold),
7458 TOJSON_IMPL(denyNewConnectionCpuThreshold),
7459 TOJSON_IMPL(warnAtCpuThreshold)
7462 static void from_json(
const nlohmann::json& j, RallypointServerLimits& p)
7465 getOptional<uint32_t>(
"maxClients", p.maxClients, j, 0);
7466 getOptional<uint32_t>(
"maxPeers", p.maxPeers, j, 0);
7467 getOptional<uint32_t>(
"maxMulticastReflectors", p.maxMulticastReflectors, j, 0);
7468 getOptional<uint32_t>(
"maxRegisteredStreams", p.maxRegisteredStreams, j, 0);
7469 getOptional<uint32_t>(
"maxStreamPaths", p.maxStreamPaths, j, 0);
7470 getOptional<uint32_t>(
"maxRxPacketsPerSec", p.maxRxPacketsPerSec, j, 0);
7471 getOptional<uint32_t>(
"maxTxPacketsPerSec", p.maxTxPacketsPerSec, j, 0);
7472 getOptional<uint32_t>(
"maxRxBytesPerSec", p.maxRxBytesPerSec, j, 0);
7473 getOptional<uint32_t>(
"maxTxBytesPerSec", p.maxTxBytesPerSec, j, 0);
7474 getOptional<uint32_t>(
"maxQOpsPerSec", p.maxQOpsPerSec, j, 0);
7475 getOptional<uint32_t>(
"maxInboundBacklog", p.maxInboundBacklog, j, 64);
7476 getOptional<uint32_t>(
"lowPriorityQueueThreshold", p.lowPriorityQueueThreshold, j, 64);
7477 getOptional<uint32_t>(
"normalPriorityQueueThreshold", p.normalPriorityQueueThreshold, j, 256);
7478 getOptional<uint32_t>(
"denyNewConnectionCpuThreshold", p.denyNewConnectionCpuThreshold, j, 75);
7479 getOptional<uint32_t>(
"warnAtCpuThreshold", p.warnAtCpuThreshold, j, 65);
7483 JSON_SERIALIZED_CLASS(RallypointServerStatusReportConfiguration)
7495 IMPLEMENT_JSON_SERIALIZATION()
7530 includeLinks =
false;
7531 includePeerLinkDetails =
false;
7532 includeClientLinkDetails =
false;
7537 static void to_json(nlohmann::json& j,
const RallypointServerStatusReportConfiguration& p)
7540 TOJSON_IMPL(fileName),
7541 TOJSON_IMPL(intervalSecs),
7542 TOJSON_IMPL(enabled),
7543 TOJSON_IMPL(includeLinks),
7544 TOJSON_IMPL(includePeerLinkDetails),
7545 TOJSON_IMPL(includeClientLinkDetails),
7549 static void from_json(
const nlohmann::json& j, RallypointServerStatusReportConfiguration& p)
7552 getOptional<std::string>(
"fileName", p.fileName, j);
7553 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
7554 getOptional<bool>(
"enabled", p.enabled, j,
false);
7555 getOptional<bool>(
"includeLinks", p.includeLinks, j,
false);
7556 getOptional<bool>(
"includePeerLinkDetails", p.includePeerLinkDetails, j,
false);
7557 getOptional<bool>(
"includeClientLinkDetails", p.includeClientLinkDetails, j,
false);
7558 getOptional<std::string>(
"runCmd", p.runCmd, j);
7562 JSON_SERIALIZED_CLASS(RallypointServerLinkGraph)
7565 IMPLEMENT_JSON_SERIALIZATION()
7608 includeDigraphEnclosure =
true;
7609 includeClients =
false;
7610 coreRpStyling =
"[shape=hexagon color=firebrick style=filled]";
7611 leafRpStyling =
"[shape=box color=gray style=filled]";
7612 clientStyling.clear();
7617 static void to_json(nlohmann::json& j,
const RallypointServerLinkGraph& p)
7620 TOJSON_IMPL(fileName),
7621 TOJSON_IMPL(minRefreshSecs),
7622 TOJSON_IMPL(enabled),
7623 TOJSON_IMPL(includeDigraphEnclosure),
7624 TOJSON_IMPL(includeClients),
7625 TOJSON_IMPL(coreRpStyling),
7626 TOJSON_IMPL(leafRpStyling),
7627 TOJSON_IMPL(clientStyling),
7631 static void from_json(
const nlohmann::json& j, RallypointServerLinkGraph& p)
7634 getOptional<std::string>(
"fileName", p.fileName, j);
7635 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
7636 getOptional<bool>(
"enabled", p.enabled, j,
false);
7637 getOptional<bool>(
"includeDigraphEnclosure", p.includeDigraphEnclosure, j,
true);
7638 getOptional<bool>(
"includeClients", p.includeClients, j,
false);
7639 getOptional<std::string>(
"coreRpStyling", p.coreRpStyling, j,
"[shape=hexagon color=firebrick style=filled]");
7640 getOptional<std::string>(
"leafRpStyling", p.leafRpStyling, j,
"[shape=box color=gray style=filled]");
7641 getOptional<std::string>(
"clientStyling", p.clientStyling, j);
7642 getOptional<std::string>(
"runCmd", p.runCmd, j);
7647 JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
7650 IMPLEMENT_JSON_SERIALIZATION()
7679 static void to_json(nlohmann::json& j,
const RallypointServerRouteMap& p)
7682 TOJSON_IMPL(fileName),
7683 TOJSON_IMPL(minRefreshSecs),
7684 TOJSON_IMPL(enabled),
7688 static void from_json(
const nlohmann::json& j, RallypointServerRouteMap& p)
7691 getOptional<std::string>(
"fileName", p.fileName, j);
7692 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
7693 getOptional<bool>(
"enabled", p.enabled, j,
false);
7694 getOptional<std::string>(
"runCmd", p.runCmd, j);
7699 JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
7711 IMPLEMENT_JSON_SERIALIZATION()
7730 immediateClose =
true;
7734 static void to_json(nlohmann::json& j,
const ExternalHealthCheckResponder& p)
7737 TOJSON_IMPL(listenPort),
7738 TOJSON_IMPL(immediateClose)
7741 static void from_json(
const nlohmann::json& j, ExternalHealthCheckResponder& p)
7744 getOptional<int>(
"listenPort", p.listenPort, j, 0);
7745 getOptional<bool>(
"immediateClose", p.immediateClose, j,
true);
7750 JSON_SERIALIZED_CLASS(PeeringConfiguration)
7760 IMPLEMENT_JSON_SERIALIZATION()
7790 static void to_json(nlohmann::json& j,
const PeeringConfiguration& p)
7794 TOJSON_IMPL(version),
7795 TOJSON_IMPL(comments),
7799 static void from_json(
const nlohmann::json& j, PeeringConfiguration& p)
7802 getOptional<std::string>(
"id", p.id, j);
7803 getOptional<int>(
"version", p.version, j, 0);
7804 getOptional<std::string>(
"comments", p.comments, j);
7805 getOptional<std::vector<RallypointPeer>>(
"peers", p.peers, j);
7809 JSON_SERIALIZED_CLASS(IgmpSnooping)
7819 IMPLEMENT_JSON_SERIALIZATION()
7844 queryIntervalMs = 60000;
7845 lastMemberQueryIntervalMs = 1000;
7846 lastMemberQueryCount = 1;
7850 static void to_json(nlohmann::json& j,
const IgmpSnooping& p)
7853 TOJSON_IMPL(enabled),
7854 TOJSON_IMPL(queryIntervalMs),
7855 TOJSON_IMPL(lastMemberQueryIntervalMs),
7856 TOJSON_IMPL(lastMemberQueryCount)
7859 static void from_json(
const nlohmann::json& j, IgmpSnooping& p)
7862 getOptional<bool>(
"enabled", p.enabled, j);
7863 getOptional<int>(
"queryIntervalMs", p.queryIntervalMs, j, 60000);
7864 getOptional<int>(
"lastMemberQueryIntervalMs", p.lastMemberQueryIntervalMs, j, 1000);
7865 getOptional<int>(
"lastMemberQueryCount", p.lastMemberQueryCount, j, 1);
7870 JSON_SERIALIZED_CLASS(RallypointReflector)
7879 IMPLEMENT_JSON_SERIALIZATION()
7910 multicastInterfaceName.clear();
7911 additionalTx.clear();
7915 static void to_json(nlohmann::json& j,
const RallypointReflector& p)
7921 TOJSON_IMPL(multicastInterfaceName),
7922 TOJSON_IMPL(additionalTx)
7925 static void from_json(
const nlohmann::json& j, RallypointReflector& p)
7928 j.at(
"id").get_to(p.id);
7929 j.at(
"rx").get_to(p.rx);
7930 j.at(
"tx").get_to(p.tx);
7931 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
7932 getOptional<std::vector<NetworkAddress>>(
"additionalTx", p.additionalTx, j);
7937 JSON_SERIALIZED_CLASS(RallypointUdpStreamingIpvX)
7946 IMPLEMENT_JSON_SERIALIZATION()
7968 static void to_json(nlohmann::json& j,
const RallypointUdpStreamingIpvX& p)
7971 TOJSON_IMPL(enabled),
7972 TOJSON_IMPL(external)
7975 static void from_json(
const nlohmann::json& j, RallypointUdpStreamingIpvX& p)
7978 getOptional<bool>(
"enabled", p.enabled, j,
true);
7979 getOptional<NetworkAddress>(
"external", p.external, j);
7983 JSON_SERIALIZED_CLASS(RallypointUdpStreaming)
7992 IMPLEMENT_JSON_SERIALIZATION()
8003 ctSharedKeyAes256FullIv = 1,
8006 ctSharedKeyAes256IdxIv = 2,
8009 ctSharedKeyChaCha20FullIv = 3,
8012 ctSharedKeyChaCha20IdxIv = 4
8048 cryptoType = CryptoType_t::ctSharedKeyAes256FullIv;
8052 keepaliveIntervalSecs = 15;
8053 priority = TxPriority_t::priVoice;
8058 static void to_json(nlohmann::json& j,
const RallypointUdpStreaming& p)
8061 TOJSON_IMPL(enabled),
8062 TOJSON_IMPL(cryptoType),
8063 TOJSON_IMPL(listenPort),
8064 TOJSON_IMPL(keepaliveIntervalSecs),
8067 TOJSON_IMPL(priority),
8071 static void from_json(
const nlohmann::json& j, RallypointUdpStreaming& p)
8074 getOptional<bool>(
"enabled", p.enabled, j,
true);
8075 getOptional<RallypointUdpStreaming::CryptoType_t>(
"cryptoType", p.cryptoType, j, RallypointUdpStreaming::CryptoType_t::ctSharedKeyAes256FullIv);
8076 getOptional<int>(
"listenPort", p.listenPort, j, 7444);
8077 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
8078 getOptional<RallypointUdpStreamingIpvX>(
"ipv4", p.ipv4, j);
8079 getOptional<RallypointUdpStreamingIpvX>(
"ipv6", p.ipv6, j);
8080 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
8081 getOptional<int>(
"ttl", p.ttl, j, 64);
8085 JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
8094 IMPLEMENT_JSON_SERIALIZATION()
8139 static void to_json(nlohmann::json& j,
const RallypointRpRtTimingBehavior& p)
8142 TOJSON_IMPL(behavior),
8143 TOJSON_IMPL(atOrAboveMs),
8147 static void from_json(
const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
8150 getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>(
"behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
8151 getOptional<uint32_t>(
"atOrAboveMs", p.atOrAboveMs, j, 0);
8152 getOptional<std::string>(
"runCmd", p.runCmd, j);
8157 JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
8166 IMPLEMENT_JSON_SERIALIZATION()
8188 certificate.clear();
8192 static void to_json(nlohmann::json& j,
const RallypointWebsocketSettings& p)
8195 TOJSON_IMPL(enabled),
8196 TOJSON_IMPL(listenPort),
8197 TOJSON_IMPL(certificate)
8200 static void from_json(
const nlohmann::json& j, RallypointWebsocketSettings& p)
8203 getOptional<bool>(
"enabled", p.enabled, j,
false);
8204 getOptional<int>(
"listenPort", p.listenPort, j, 8443);
8205 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8211 JSON_SERIALIZED_CLASS(RallypointAdvertisingSettings)
8220 IMPLEMENT_JSON_SERIALIZATION()
8259 serviceName =
"_rallypoint._tcp.local.";
8260 interfaceName.clear();
8263 extraMeshes.clear();
8267 static void to_json(nlohmann::json& j,
const RallypointAdvertisingSettings& p)
8270 TOJSON_IMPL(enabled),
8271 TOJSON_IMPL(meshName),
8272 TOJSON_IMPL(hostName),
8273 TOJSON_IMPL(serviceName),
8274 TOJSON_IMPL(interfaceName),
8277 TOJSON_IMPL(extraMeshes)
8280 static void from_json(
const nlohmann::json& j, RallypointAdvertisingSettings& p)
8283 getOptional<bool>(
"enabled", p.enabled, j,
false);
8284 getOptional<std::string>(
"meshName", p.meshName, j);
8285 getOptional<std::string>(
"hostName", p.hostName, j);
8286 getOptional<std::string>(
"serviceName", p.serviceName, j,
"_rallypoint._tcp.local.");
8287 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
8289 getOptional<int>(
"port", p.port, j, 0);
8290 getOptional<int>(
"ttl", p.ttl, j, 60);
8291 getOptional<std::vector<std::string>>(
"extraMeshes", p.extraMeshes, j);
8296 JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
8305 IMPLEMENT_JSON_SERIALIZATION()
8323 restrictions.clear();
8327 static void to_json(nlohmann::json& j,
const RallypointExtendedGroupRestriction& p)
8331 TOJSON_IMPL(restrictions)
8334 static void from_json(
const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
8337 getOptional<std::string>(
"id", p.id, j);
8338 getOptional<std::vector<StringRestrictionList>>(
"restrictions", p.restrictions, j);
8343 JSON_SERIALIZED_CLASS(RallypointServer)
8354 IMPLEMENT_JSON_SERIALIZATION()
8528 interfaceName.clear();
8529 certificate.clear();
8530 allowMulticastForwarding =
false;
8531 peeringConfiguration.clear();
8532 peeringConfigurationFileName.clear();
8533 peeringConfigurationFileCommand.clear();
8534 peeringConfigurationFileCheckSecs = 60;
8536 statusReport.clear();
8539 externalHealthCheckResponder.clear();
8540 allowPeerForwarding =
false;
8541 multicastInterfaceName.clear();
8544 forwardDiscoveredGroups =
false;
8545 forwardMulticastAddressing =
false;
8547 disableMessageSigning =
false;
8548 multicastRestrictions.clear();
8549 igmpSnooping.clear();
8550 staticReflectors.clear();
8551 tcpTxOptions.clear();
8552 multicastTxOptions.clear();
8553 certStoreFileName.clear();
8554 certStorePasswordHex.clear();
8555 groupRestrictions.clear();
8556 configurationCheckSignalName =
"rts.7b392d1.${id}";
8559 udpStreaming.clear();
8561 normalTaskQueueBias = 0;
8562 enableLeafReflectionReverseSubscription =
false;
8563 disableLoopDetection =
false;
8564 maxSecurityLevel = 0;
8566 maxOutboundPeerConnectionIntervalDeltaSecs = 15;
8567 peerRtTestIntervalMs = 60000;
8568 peerRtBehaviors.clear();
8571 advertising.clear();
8572 extendedGroupRestrictions.clear();
8573 groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
8574 ipFamily = IpFamilyType_t::ifIpUnspec;
8580 static void to_json(nlohmann::json& j,
const RallypointServer& p)
8583 TOJSON_IMPL(fipsCrypto),
8584 TOJSON_IMPL(watchdog),
8586 TOJSON_IMPL(listenPort),
8587 TOJSON_IMPL(interfaceName),
8588 TOJSON_IMPL(certificate),
8589 TOJSON_IMPL(allowMulticastForwarding),
8591 TOJSON_IMPL(peeringConfigurationFileName),
8592 TOJSON_IMPL(peeringConfigurationFileCommand),
8593 TOJSON_IMPL(peeringConfigurationFileCheckSecs),
8594 TOJSON_IMPL(ioPools),
8595 TOJSON_IMPL(statusReport),
8596 TOJSON_IMPL(limits),
8597 TOJSON_IMPL(linkGraph),
8598 TOJSON_IMPL(externalHealthCheckResponder),
8599 TOJSON_IMPL(allowPeerForwarding),
8600 TOJSON_IMPL(multicastInterfaceName),
8602 TOJSON_IMPL(discovery),
8603 TOJSON_IMPL(forwardDiscoveredGroups),
8604 TOJSON_IMPL(forwardMulticastAddressing),
8605 TOJSON_IMPL(isMeshLeaf),
8606 TOJSON_IMPL(disableMessageSigning),
8607 TOJSON_IMPL(multicastRestrictions),
8608 TOJSON_IMPL(igmpSnooping),
8609 TOJSON_IMPL(staticReflectors),
8610 TOJSON_IMPL(tcpTxOptions),
8611 TOJSON_IMPL(multicastTxOptions),
8612 TOJSON_IMPL(certStoreFileName),
8613 TOJSON_IMPL(certStorePasswordHex),
8614 TOJSON_IMPL(groupRestrictions),
8615 TOJSON_IMPL(configurationCheckSignalName),
8616 TOJSON_IMPL(featureset),
8617 TOJSON_IMPL(licensing),
8618 TOJSON_IMPL(udpStreaming),
8619 TOJSON_IMPL(sysFlags),
8620 TOJSON_IMPL(normalTaskQueueBias),
8621 TOJSON_IMPL(enableLeafReflectionReverseSubscription),
8622 TOJSON_IMPL(disableLoopDetection),
8623 TOJSON_IMPL(maxSecurityLevel),
8624 TOJSON_IMPL(routeMap),
8625 TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
8626 TOJSON_IMPL(peerRtTestIntervalMs),
8627 TOJSON_IMPL(peerRtBehaviors),
8628 TOJSON_IMPL(websocket),
8630 TOJSON_IMPL(advertising),
8631 TOJSON_IMPL(extendedGroupRestrictions),
8632 TOJSON_IMPL(groupRestrictionAccessPolicyType),
8633 TOJSON_IMPL(ipFamily),
8634 TOJSON_IMPL(rxCapture),
8635 TOJSON_IMPL(txCapture)
8638 static void from_json(
const nlohmann::json& j, RallypointServer& p)
8641 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
8642 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
8643 getOptional<std::string>(
"id", p.id, j);
8644 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8645 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
8646 getOptional<int>(
"listenPort", p.listenPort, j, 7443);
8647 getOptional<bool>(
"allowMulticastForwarding", p.allowMulticastForwarding, j,
false);
8649 getOptional<std::string>(
"peeringConfigurationFileName", p.peeringConfigurationFileName, j);
8650 getOptional<std::string>(
"peeringConfigurationFileCommand", p.peeringConfigurationFileCommand, j);
8651 getOptional<int>(
"peeringConfigurationFileCheckSecs", p.peeringConfigurationFileCheckSecs, j, 60);
8652 getOptional<int>(
"ioPools", p.ioPools, j, -1);
8653 getOptional<RallypointServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
8654 getOptional<RallypointServerLimits>(
"limits", p.limits, j);
8655 getOptional<RallypointServerLinkGraph>(
"linkGraph", p.linkGraph, j);
8656 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
8657 getOptional<bool>(
"allowPeerForwarding", p.allowPeerForwarding, j,
false);
8658 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
8659 getOptional<Tls>(
"tls", p.tls, j);
8660 getOptional<DiscoveryConfiguration>(
"discovery", p.discovery, j);
8661 getOptional<bool>(
"forwardDiscoveredGroups", p.forwardDiscoveredGroups, j,
false);
8662 getOptional<bool>(
"forwardMulticastAddressing", p.forwardMulticastAddressing, j,
false);
8663 getOptional<bool>(
"isMeshLeaf", p.isMeshLeaf, j,
false);
8664 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
8665 getOptional<NetworkAddressRestrictionList>(
"multicastRestrictions", p.multicastRestrictions, j);
8666 getOptional<IgmpSnooping>(
"igmpSnooping", p.igmpSnooping, j);
8667 getOptional<std::vector<RallypointReflector>>(
"staticReflectors", p.staticReflectors, j);
8668 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
8669 getOptional<NetworkTxOptions>(
"multicastTxOptions", p.multicastTxOptions, j);
8670 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
8671 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
8672 getOptional<StringRestrictionList>(
"groupRestrictions", p.groupRestrictions, j);
8673 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
8674 getOptional<Licensing>(
"licensing", p.licensing, j);
8675 getOptional<Featureset>(
"featureset", p.featureset, j);
8676 getOptional<RallypointUdpStreaming>(
"udpStreaming", p.udpStreaming, j);
8677 getOptional<uint32_t>(
"sysFlags", p.sysFlags, j, 0);
8678 getOptional<uint32_t>(
"normalTaskQueueBias", p.normalTaskQueueBias, j, 0);
8679 getOptional<bool>(
"enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j,
false);
8680 getOptional<bool>(
"disableLoopDetection", p.disableLoopDetection, j,
false);
8681 getOptional<uint32_t>(
"maxSecurityLevel", p.maxSecurityLevel, j, 0);
8682 getOptional<RallypointServerRouteMap>(
"routeMap", p.routeMap, j);
8683 getOptional<uint32_t>(
"maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
8684 getOptional<int>(
"peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
8685 getOptional<std::vector<RallypointRpRtTimingBehavior>>(
"peerRtBehaviors", p.peerRtBehaviors, j);
8686 getOptional<RallypointWebsocketSettings>(
"websocket", p.websocket, j);
8687 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
8688 getOptional<RallypointAdvertisingSettings>(
"advertising", p.advertising, j);
8689 getOptional<std::vector<RallypointExtendedGroupRestriction>>(
"extendedGroupRestrictions", p.extendedGroupRestrictions, j);
8690 getOptional<GroupRestrictionAccessPolicyType_t>(
"groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
8691 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIpUnspec);
8692 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
8693 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
8697 JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
8709 IMPLEMENT_JSON_SERIALIZATION()
8744 configurationVersion = 0;
8748 static void to_json(nlohmann::json& j,
const PlatformDiscoveredService& p)
8754 TOJSON_IMPL(address),
8756 TOJSON_IMPL(configurationVersion)
8759 static void from_json(
const nlohmann::json& j, PlatformDiscoveredService& p)
8762 getOptional<std::string>(
"id", p.id, j);
8763 getOptional<std::string>(
"type", p.type, j);
8764 getOptional<std::string>(
"name", p.name, j);
8765 getOptional<NetworkAddress>(
"address", p.address, j);
8766 getOptional<std::string>(
"uri", p.uri, j);
8767 getOptional<uint32_t>(
"configurationVersion", p.configurationVersion, j, 0);
8807 IMPLEMENT_JSON_SERIALIZATION()
8853 mostRecentFirst =
true;
8854 startedOnOrAfter = 0;
8855 endedOnOrBefore = 0;
8858 onlyCommitted =
true;
8866 static void to_json(nlohmann::json& j,
const TimelineQueryParameters& p)
8869 TOJSON_IMPL(maxCount),
8870 TOJSON_IMPL(mostRecentFirst),
8871 TOJSON_IMPL(startedOnOrAfter),
8872 TOJSON_IMPL(endedOnOrBefore),
8873 TOJSON_IMPL(onlyDirection),
8874 TOJSON_IMPL(onlyType),
8875 TOJSON_IMPL(onlyCommitted),
8876 TOJSON_IMPL(onlyAlias),
8877 TOJSON_IMPL(onlyNodeId),
8878 TOJSON_IMPL(onlyTxId),
8882 static void from_json(
const nlohmann::json& j, TimelineQueryParameters& p)
8885 getOptional<long>(
"maxCount", p.maxCount, j, 50);
8886 getOptional<bool>(
"mostRecentFirst", p.mostRecentFirst, j,
false);
8887 getOptional<uint64_t>(
"startedOnOrAfter", p.startedOnOrAfter, j, 0);
8888 getOptional<uint64_t>(
"endedOnOrBefore", p.endedOnOrBefore, j, 0);
8889 getOptional<int>(
"onlyDirection", p.onlyDirection, j, 0);
8890 getOptional<int>(
"onlyType", p.onlyType, j, 0);
8891 getOptional<bool>(
"onlyCommitted", p.onlyCommitted, j,
true);
8892 getOptional<std::string>(
"onlyAlias", p.onlyAlias, j, EMPTY_STRING);
8893 getOptional<std::string>(
"onlyNodeId", p.onlyNodeId, j, EMPTY_STRING);
8894 getOptional<int>(
"onlyTxId", p.onlyTxId, j, 0);
8895 getOptional<std::string>(
"sql", p.sql, j, EMPTY_STRING);
8899 JSON_SERIALIZED_CLASS(CertStoreCertificate)
8908 IMPLEMENT_JSON_SERIALIZATION()
8935 certificatePem.clear();
8936 privateKeyPem.clear();
8937 internalData =
nullptr;
8942 static void to_json(nlohmann::json& j,
const CertStoreCertificate& p)
8946 TOJSON_IMPL(certificatePem),
8947 TOJSON_IMPL(privateKeyPem),
8951 static void from_json(
const nlohmann::json& j, CertStoreCertificate& p)
8954 j.at(
"id").get_to(p.id);
8955 j.at(
"certificatePem").get_to(p.certificatePem);
8956 getOptional<std::string>(
"privateKeyPem", p.privateKeyPem, j, EMPTY_STRING);
8957 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
8961 JSON_SERIALIZED_CLASS(CertStore)
8970 IMPLEMENT_JSON_SERIALIZATION()
8988 certificates.clear();
8992 static void to_json(nlohmann::json& j,
const CertStore& p)
8996 TOJSON_IMPL(certificates)
8999 static void from_json(
const nlohmann::json& j, CertStore& p)
9002 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9003 getOptional<std::vector<CertStoreCertificate>>(
"certificates", p.certificates, j);
9007 JSON_SERIALIZED_CLASS(CertStoreCertificateElement)
9016 IMPLEMENT_JSON_SERIALIZATION()
9040 hasPrivateKey =
false;
9045 static void to_json(nlohmann::json& j,
const CertStoreCertificateElement& p)
9049 TOJSON_IMPL(hasPrivateKey),
9053 if(!p.certificatePem.empty())
9055 j[
"certificatePem"] = p.certificatePem;
9058 static void from_json(
const nlohmann::json& j, CertStoreCertificateElement& p)
9061 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9062 getOptional<bool>(
"hasPrivateKey", p.hasPrivateKey, j,
false);
9063 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
9064 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
9068 JSON_SERIALIZED_CLASS(CertStoreDescriptor)
9077 IMPLEMENT_JSON_SERIALIZATION()
9107 certificates.clear();
9111 static void to_json(nlohmann::json& j,
const CertStoreDescriptor& p)
9115 TOJSON_IMPL(fileName),
9116 TOJSON_IMPL(version),
9118 TOJSON_IMPL(certificates)
9121 static void from_json(
const nlohmann::json& j, CertStoreDescriptor& p)
9124 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9125 getOptional<std::string>(
"fileName", p.fileName, j, EMPTY_STRING);
9126 getOptional<int>(
"version", p.version, j, 0);
9127 getOptional<int>(
"flags", p.flags, j, 0);
9128 getOptional<std::vector<CertStoreCertificateElement>>(
"certificates", p.certificates, j);
9132 JSON_SERIALIZED_CLASS(CertificateSubjectElement)
9141 IMPLEMENT_JSON_SERIALIZATION()
9163 static void to_json(nlohmann::json& j,
const CertificateSubjectElement& p)
9170 static void from_json(
const nlohmann::json& j, CertificateSubjectElement& p)
9173 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
9174 getOptional<std::string>(
"value", p.value, j, EMPTY_STRING);
9179 JSON_SERIALIZED_CLASS(CertificateDescriptor)
9188 IMPLEMENT_JSON_SERIALIZATION()
9239 fingerprint.clear();
9240 subjectElements.clear();
9241 certificatePem.clear();
9242 publicKeyPem.clear();
9246 static void to_json(nlohmann::json& j,
const CertificateDescriptor& p)
9249 TOJSON_IMPL(subject),
9250 TOJSON_IMPL(issuer),
9251 TOJSON_IMPL(selfSigned),
9252 TOJSON_IMPL(version),
9253 TOJSON_IMPL(notBefore),
9254 TOJSON_IMPL(notAfter),
9255 TOJSON_IMPL(serial),
9256 TOJSON_IMPL(fingerprint),
9257 TOJSON_IMPL(subjectElements),
9258 TOJSON_IMPL(certificatePem),
9259 TOJSON_IMPL(publicKeyPem)
9262 static void from_json(
const nlohmann::json& j, CertificateDescriptor& p)
9265 getOptional<std::string>(
"subject", p.subject, j, EMPTY_STRING);
9266 getOptional<std::string>(
"issuer", p.issuer, j, EMPTY_STRING);
9267 getOptional<bool>(
"selfSigned", p.selfSigned, j,
false);
9268 getOptional<int>(
"version", p.version, j, 0);
9269 getOptional<std::string>(
"notBefore", p.notBefore, j, EMPTY_STRING);
9270 getOptional<std::string>(
"notAfter", p.notAfter, j, EMPTY_STRING);
9271 getOptional<std::string>(
"serial", p.serial, j, EMPTY_STRING);
9272 getOptional<std::string>(
"fingerprint", p.fingerprint, j, EMPTY_STRING);
9273 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
9274 getOptional<std::string>(
"publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
9275 getOptional<std::vector<CertificateSubjectElement>>(
"subjectElements", p.subjectElements, j);
9280 JSON_SERIALIZED_CLASS(RiffDescriptor)
9292 IMPLEMENT_JSON_SERIALIZATION()
9333 certDescriptor.clear();
9338 static void to_json(nlohmann::json& j,
const RiffDescriptor& p)
9342 TOJSON_IMPL(verified),
9343 TOJSON_IMPL(channels),
9344 TOJSON_IMPL(sampleCount),
9346 TOJSON_IMPL(certPem),
9347 TOJSON_IMPL(certDescriptor),
9348 TOJSON_IMPL(signature)
9352 static void from_json(
const nlohmann::json& j, RiffDescriptor& p)
9355 FROMJSON_IMPL(file, std::string, EMPTY_STRING);
9356 FROMJSON_IMPL(verified,
bool,
false);
9357 FROMJSON_IMPL(channels,
int, 0);
9358 FROMJSON_IMPL(sampleCount,
int, 0);
9359 FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
9360 FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
9361 getOptional<CertificateDescriptor>(
"certDescriptor", p.certDescriptor, j);
9362 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
9367 JSON_SERIALIZED_CLASS(BridgeCreationDetail)
9376 IMPLEMENT_JSON_SERIALIZATION()
9394 csAlreadyExists = -3,
9397 csInvalidConfiguration = -4,
9403 csInsufficientGroups = -6,
9406 csTooManyGroups = -7,
9409 csDuplicateGroup = -8,
9412 csLocalLoopDetected = -9,
9429 status = csUndefined;
9433 static void to_json(nlohmann::json& j,
const BridgeCreationDetail& p)
9440 static void from_json(
const nlohmann::json& j, BridgeCreationDetail& p)
9443 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9444 getOptional<BridgeCreationDetail::CreationStatus_t>(
"status", p.status, j, BridgeCreationDetail::CreationStatus_t::csUndefined);
9447 JSON_SERIALIZED_CLASS(GroupConnectionDetail)
9456 IMPLEMENT_JSON_SERIALIZATION()
9468 ctDirectDatagram = 1,
9497 connectionType = ctUndefined;
9504 static void to_json(nlohmann::json& j,
const GroupConnectionDetail& p)
9508 TOJSON_IMPL(connectionType),
9510 TOJSON_IMPL(asFailover),
9516 j[
"asFailover"] = p.asFailover;
9519 static void from_json(
const nlohmann::json& j, GroupConnectionDetail& p)
9522 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9523 getOptional<GroupConnectionDetail::ConnectionType_t>(
"connectionType", p.connectionType, j, GroupConnectionDetail::ConnectionType_t::ctUndefined);
9524 getOptional<std::string>(
"peer", p.peer, j, EMPTY_STRING);
9525 getOptional<bool>(
"asFailover", p.asFailover, j,
false);
9526 getOptional<std::string>(
"reason", p.reason, j, EMPTY_STRING);
9530 JSON_SERIALIZED_CLASS(GroupTxDetail)
9539 IMPLEMENT_JSON_SERIALIZATION()
9557 txsNotAnAudioGroup = -1,
9563 txsNotConnected = -3,
9566 txsAlreadyTransmitting = -4,
9569 txsInvalidParams = -5,
9572 txsPriorityTooLow = -6,
9575 txsRxActiveOnNonFdx = -7,
9578 txsCannotSubscribeToInput = -8,
9584 txsTxEndedWithFailure = -10,
9587 txsOthersActive = -11
9616 status = txsUndefined;
9619 nonFdxMsHangRemaining = 0;
9624 static void to_json(nlohmann::json& j,
const GroupTxDetail& p)
9628 TOJSON_IMPL(status),
9629 TOJSON_IMPL(localPriority),
9634 if(p.status == GroupTxDetail::TxStatus_t::txsPriorityTooLow)
9636 j[
"remotePriority"] = p.remotePriority;
9638 else if(p.status == GroupTxDetail::TxStatus_t::txsRxActiveOnNonFdx)
9640 j[
"nonFdxMsHangRemaining"] = p.nonFdxMsHangRemaining;
9643 static void from_json(
const nlohmann::json& j, GroupTxDetail& p)
9646 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9647 getOptional<GroupTxDetail::TxStatus_t>(
"status", p.status, j, GroupTxDetail::TxStatus_t::txsUndefined);
9648 getOptional<int>(
"localPriority", p.localPriority, j, 0);
9649 getOptional<int>(
"remotePriority", p.remotePriority, j, 0);
9650 getOptional<long>(
"nonFdxMsHangRemaining", p.nonFdxMsHangRemaining, j, 0);
9651 getOptional<uint32_t>(
"txId", p.txId, j, 0);
9655 JSON_SERIALIZED_CLASS(GroupCreationDetail)
9664 IMPLEMENT_JSON_SERIALIZATION()
9682 csConflictingRpListAndCluster = -2,
9685 csAlreadyExists = -3,
9688 csInvalidConfiguration = -4,
9694 csCryptoFailure = -6,
9697 csAudioInputFailure = -7,
9700 csAudioOutputFailure = -8,
9703 csUnsupportedAudioEncoder = -9,
9709 csInvalidTransport = -11,
9726 status = csUndefined;
9730 static void to_json(nlohmann::json& j,
const GroupCreationDetail& p)
9737 static void from_json(
const nlohmann::json& j, GroupCreationDetail& p)
9740 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9741 getOptional<GroupCreationDetail::CreationStatus_t>(
"status", p.status, j, GroupCreationDetail::CreationStatus_t::csUndefined);
9746 JSON_SERIALIZED_CLASS(GroupReconfigurationDetail)
9755 IMPLEMENT_JSON_SERIALIZATION()
9773 rsInvalidConfiguration = -2,
9779 rsAudioInputFailure = -4,
9782 rsAudioOutputFailure = -5,
9785 rsDoesNotExist = -6,
9788 rsAudioInputInUse = -7,
9791 rsAudioDisabledForGroup = -8,
9794 rsGroupIsNotAudio = -9
9795 } ReconfigurationStatus_t;
9811 status = rsUndefined;
9815 static void to_json(nlohmann::json& j,
const GroupReconfigurationDetail& p)
9822 static void from_json(
const nlohmann::json& j, GroupReconfigurationDetail& p)
9825 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9826 getOptional<GroupReconfigurationDetail::ReconfigurationStatus_t>(
"status", p.status, j, GroupReconfigurationDetail::ReconfigurationStatus_t::rsUndefined);
9831 JSON_SERIALIZED_CLASS(GroupHealthReport)
9840 IMPLEMENT_JSON_SERIALIZATION()
9846 uint64_t lastErrorTs;
9847 uint64_t decryptionErrors;
9848 uint64_t encryptionErrors;
9849 uint64_t unsupportDecoderErrors;
9850 uint64_t decoderFailures;
9851 uint64_t decoderStartFailures;
9852 uint64_t inboundRtpPacketAllocationFailures;
9853 uint64_t inboundRtpPacketLoadFailures;
9854 uint64_t latePacketsDiscarded;
9855 uint64_t jitterBufferInsertionFailures;
9856 uint64_t presenceDeserializationFailures;
9857 uint64_t notRtpErrors;
9858 uint64_t generalErrors;
9869 decryptionErrors = 0;
9870 encryptionErrors = 0;
9871 unsupportDecoderErrors = 0;
9872 decoderFailures = 0;
9873 decoderStartFailures = 0;
9874 inboundRtpPacketAllocationFailures = 0;
9875 inboundRtpPacketLoadFailures = 0;
9876 latePacketsDiscarded = 0;
9877 jitterBufferInsertionFailures = 0;
9878 presenceDeserializationFailures = 0;
9888 TOJSON_IMPL(lastErrorTs),
9889 TOJSON_IMPL(decryptionErrors),
9890 TOJSON_IMPL(encryptionErrors),
9891 TOJSON_IMPL(unsupportDecoderErrors),
9892 TOJSON_IMPL(decoderFailures),
9893 TOJSON_IMPL(decoderStartFailures),
9894 TOJSON_IMPL(inboundRtpPacketAllocationFailures),
9895 TOJSON_IMPL(inboundRtpPacketLoadFailures),
9896 TOJSON_IMPL(latePacketsDiscarded),
9897 TOJSON_IMPL(jitterBufferInsertionFailures),
9898 TOJSON_IMPL(presenceDeserializationFailures),
9899 TOJSON_IMPL(notRtpErrors),
9900 TOJSON_IMPL(generalErrors)
9903 static void from_json(
const nlohmann::json& j, GroupHealthReport& p)
9906 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9907 getOptional<uint64_t>(
"lastErrorTs", p.lastErrorTs, j, 0);
9908 getOptional<uint64_t>(
"decryptionErrors", p.decryptionErrors, j, 0);
9909 getOptional<uint64_t>(
"encryptionErrors", p.encryptionErrors, j, 0);
9910 getOptional<uint64_t>(
"unsupportDecoderErrors", p.unsupportDecoderErrors, j, 0);
9911 getOptional<uint64_t>(
"decoderFailures", p.decoderFailures, j, 0);
9912 getOptional<uint64_t>(
"decoderStartFailures", p.decoderStartFailures, j, 0);
9913 getOptional<uint64_t>(
"inboundRtpPacketAllocationFailures", p.inboundRtpPacketAllocationFailures, j, 0);
9914 getOptional<uint64_t>(
"inboundRtpPacketLoadFailures", p.inboundRtpPacketLoadFailures, j, 0);
9915 getOptional<uint64_t>(
"latePacketsDiscarded", p.latePacketsDiscarded, j, 0);
9916 getOptional<uint64_t>(
"jitterBufferInsertionFailures", p.jitterBufferInsertionFailures, j, 0);
9917 getOptional<uint64_t>(
"presenceDeserializationFailures", p.presenceDeserializationFailures, j, 0);
9918 getOptional<uint64_t>(
"notRtpErrors", p.notRtpErrors, j, 0);
9919 getOptional<uint64_t>(
"generalErrors", p.generalErrors, j, 0);
9923 JSON_SERIALIZED_CLASS(InboundProcessorStats)
9932 IMPLEMENT_JSON_SERIALIZATION()
9939 uint64_t minRtpSamplesInQueue;
9940 uint64_t maxRtpSamplesInQueue;
9941 uint64_t totalSamplesTrimmed;
9944 uint64_t samplesInQueue;
9945 uint64_t totalPacketsReceived;
9946 uint64_t totalPacketsLost;
9947 uint64_t totalPacketsDiscarded;
9958 minRtpSamplesInQueue = 0;
9959 maxRtpSamplesInQueue = 0;
9960 totalSamplesTrimmed = 0;
9964 totalPacketsReceived = 0;
9965 totalPacketsLost = 0;
9966 totalPacketsDiscarded = 0;
9974 TOJSON_IMPL(jitter),
9975 TOJSON_IMPL(minRtpSamplesInQueue),
9976 TOJSON_IMPL(maxRtpSamplesInQueue),
9977 TOJSON_IMPL(totalSamplesTrimmed),
9978 TOJSON_IMPL(underruns),
9979 TOJSON_IMPL(overruns),
9980 TOJSON_IMPL(samplesInQueue),
9981 TOJSON_IMPL(totalPacketsReceived),
9982 TOJSON_IMPL(totalPacketsLost),
9983 TOJSON_IMPL(totalPacketsDiscarded)
9986 static void from_json(
const nlohmann::json& j, InboundProcessorStats& p)
9989 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
9990 getOptional<double>(
"jitter", p.jitter, j, 0.0);
9991 getOptional<uint64_t>(
"minRtpSamplesInQueue", p.minRtpSamplesInQueue, j, 0);
9992 getOptional<uint64_t>(
"maxRtpSamplesInQueue", p.maxRtpSamplesInQueue, j, 0);
9993 getOptional<uint64_t>(
"totalSamplesTrimmed", p.totalSamplesTrimmed, j, 0);
9994 getOptional<uint64_t>(
"underruns", p.underruns, j, 0);
9995 getOptional<uint64_t>(
"overruns", p.overruns, j, 0);
9996 getOptional<uint64_t>(
"samplesInQueue", p.samplesInQueue, j, 0);
9997 getOptional<uint64_t>(
"totalPacketsReceived", p.totalPacketsReceived, j, 0);
9998 getOptional<uint64_t>(
"totalPacketsLost", p.totalPacketsLost, j, 0);
9999 getOptional<uint64_t>(
"totalPacketsDiscarded", p.totalPacketsDiscarded, j, 0);
10003 JSON_SERIALIZED_CLASS(TrafficCounter)
10012 IMPLEMENT_JSON_SERIALIZATION()
10036 j = nlohmann::json{
10037 TOJSON_IMPL(packets),
10038 TOJSON_IMPL(bytes),
10039 TOJSON_IMPL(errors)
10042 static void from_json(
const nlohmann::json& j, TrafficCounter& p)
10045 getOptional<uint64_t>(
"packets", p.packets, j, 0);
10046 getOptional<uint64_t>(
"bytes", p.bytes, j, 0);
10047 getOptional<uint64_t>(
"errors", p.errors, j, 0);
10051 JSON_SERIALIZED_CLASS(GroupStats)
10060 IMPLEMENT_JSON_SERIALIZATION()
10061 IMPLEMENT_WRAPPED_JSON_SERIALIZATION(
GroupStats)
10084 static void to_json(nlohmann::json& j,
const GroupStats& p)
10086 j = nlohmann::json{
10089 TOJSON_IMPL(rxTraffic),
10090 TOJSON_IMPL(txTraffic)
10093 static void from_json(
const nlohmann::json& j, GroupStats& p)
10096 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10098 getOptional<TrafficCounter>(
"rxTraffic", p.rxTraffic, j);
10099 getOptional<TrafficCounter>(
"txTraffic", p.txTraffic, j);
10103 JSON_SERIALIZED_CLASS(RallypointConnectionDetail)
10112 IMPLEMENT_JSON_SERIALIZATION()
10136 internalId.clear();
10139 msToNextConnectionAttempt = 0;
10143 static void to_json(nlohmann::json& j,
const RallypointConnectionDetail& p)
10145 j = nlohmann::json{
10146 TOJSON_IMPL(internalId),
10151 if(p.msToNextConnectionAttempt > 0)
10153 j[
"msToNextConnectionAttempt"] = p.msToNextConnectionAttempt;
10156 static void from_json(
const nlohmann::json& j, RallypointConnectionDetail& p)
10159 getOptional<std::string>(
"internalId", p.internalId, j, EMPTY_STRING);
10160 getOptional<std::string>(
"host", p.host, j, EMPTY_STRING);
10161 getOptional<int>(
"port", p.port, j, 0);
10162 getOptional<uint64_t>(
"msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
10166 JSON_SERIALIZED_CLASS(TranslationSession)
10178 IMPLEMENT_JSON_SERIALIZATION()
10208 static void to_json(nlohmann::json& j,
const TranslationSession& p)
10210 j = nlohmann::json{
10213 TOJSON_IMPL(groups),
10214 TOJSON_IMPL(enabled)
10217 static void from_json(
const nlohmann::json& j, TranslationSession& p)
10220 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
10221 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
10222 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
10223 FROMJSON_IMPL(enabled,
bool,
true);
10227 JSON_SERIALIZED_CLASS(TranslationConfiguration)
10239 IMPLEMENT_JSON_SERIALIZATION()
10261 static void to_json(nlohmann::json& j,
const TranslationConfiguration& p)
10263 j = nlohmann::json{
10264 TOJSON_IMPL(sessions),
10265 TOJSON_IMPL(groups)
10268 static void from_json(
const nlohmann::json& j, TranslationConfiguration& p)
10271 getOptional<std::vector<TranslationSession>>(
"sessions", p.sessions, j);
10272 getOptional<std::vector<Group>>(
"groups", p.groups, j);
10276 JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
10288 IMPLEMENT_JSON_SERIALIZATION()
10323 includeGroupDetail =
false;
10324 includeSessionDetail =
false;
10325 includeSessionGroupDetail =
false;
10330 static void to_json(nlohmann::json& j,
const LingoServerStatusReportConfiguration& p)
10332 j = nlohmann::json{
10333 TOJSON_IMPL(fileName),
10334 TOJSON_IMPL(intervalSecs),
10335 TOJSON_IMPL(enabled),
10336 TOJSON_IMPL(includeGroupDetail),
10337 TOJSON_IMPL(includeSessionDetail),
10338 TOJSON_IMPL(includeSessionGroupDetail),
10339 TOJSON_IMPL(runCmd)
10342 static void from_json(
const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
10345 getOptional<std::string>(
"fileName", p.fileName, j);
10346 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
10347 getOptional<bool>(
"enabled", p.enabled, j,
false);
10348 getOptional<std::string>(
"runCmd", p.runCmd, j);
10349 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
10350 getOptional<bool>(
"includeSessionDetail", p.includeSessionDetail, j,
false);
10351 getOptional<bool>(
"includeSessionGroupDetail", p.includeSessionGroupDetail, j,
false);
10355 JSON_SERIALIZED_CLASS(LingoServerInternals)
10369 IMPLEMENT_JSON_SERIALIZATION()
10387 housekeeperIntervalMs = 1000;
10391 static void to_json(nlohmann::json& j,
const LingoServerInternals& p)
10393 j = nlohmann::json{
10394 TOJSON_IMPL(watchdog),
10395 TOJSON_IMPL(housekeeperIntervalMs)
10398 static void from_json(
const nlohmann::json& j, LingoServerInternals& p)
10401 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
10402 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
10406 JSON_SERIALIZED_CLASS(LingoServerConfiguration)
10417 IMPLEMENT_JSON_SERIALIZATION()
10474 serviceConfigurationFileCheckSecs = 60;
10475 lingoConfigurationFileName.clear();
10476 lingoConfigurationFileCommand.clear();
10477 lingoConfigurationFileCheckSecs = 60;
10478 statusReport.clear();
10479 externalHealthCheckResponder.clear();
10481 certStoreFileName.clear();
10482 certStorePasswordHex.clear();
10483 enginePolicy.clear();
10484 configurationCheckSignalName =
"rts.22f4ec3.${id}";
10485 fipsCrypto.clear();
10491 static void to_json(nlohmann::json& j,
const LingoServerConfiguration& p)
10493 j = nlohmann::json{
10495 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
10496 TOJSON_IMPL(lingoConfigurationFileName),
10497 TOJSON_IMPL(lingoConfigurationFileCommand),
10498 TOJSON_IMPL(lingoConfigurationFileCheckSecs),
10499 TOJSON_IMPL(statusReport),
10500 TOJSON_IMPL(externalHealthCheckResponder),
10501 TOJSON_IMPL(internals),
10502 TOJSON_IMPL(certStoreFileName),
10503 TOJSON_IMPL(certStorePasswordHex),
10504 TOJSON_IMPL(enginePolicy),
10505 TOJSON_IMPL(configurationCheckSignalName),
10506 TOJSON_IMPL(fipsCrypto),
10507 TOJSON_IMPL(proxy),
10511 static void from_json(
const nlohmann::json& j, LingoServerConfiguration& p)
10514 getOptional<std::string>(
"id", p.id, j);
10515 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
10516 getOptional<std::string>(
"lingoConfigurationFileName", p.lingoConfigurationFileName, j);
10517 getOptional<std::string>(
"lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
10518 getOptional<int>(
"lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
10519 getOptional<LingoServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10520 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
10521 getOptional<LingoServerInternals>(
"internals", p.internals, j);
10522 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
10523 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
10524 j.at(
"enginePolicy").get_to(p.enginePolicy);
10525 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.22f4ec3.${id}");
10526 getOptional<FipsCryptoSettings>(
"fipsCrypo", p.fipsCrypto, j);
10527 getOptional<NetworkAddress>(
"proxy", p.proxy, j);
10528 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
10533 JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
10545 IMPLEMENT_JSON_SERIALIZATION()
10575 static void to_json(nlohmann::json& j,
const VoiceToVoiceSession& p)
10577 j = nlohmann::json{
10580 TOJSON_IMPL(groups),
10581 TOJSON_IMPL(enabled)
10584 static void from_json(
const nlohmann::json& j, VoiceToVoiceSession& p)
10587 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
10588 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
10589 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
10590 FROMJSON_IMPL(enabled,
bool,
true);
10594 JSON_SERIALIZED_CLASS(LingoConfiguration)
10606 IMPLEMENT_JSON_SERIALIZATION()
10623 voiceToVoiceSessions.clear();
10628 static void to_json(nlohmann::json& j,
const LingoConfiguration& p)
10630 j = nlohmann::json{
10631 TOJSON_IMPL(voiceToVoiceSessions),
10632 TOJSON_IMPL(groups)
10635 static void from_json(
const nlohmann::json& j, LingoConfiguration& p)
10638 getOptional<std::vector<VoiceToVoiceSession>>(
"voiceToVoiceSessions", p.voiceToVoiceSessions, j);
10639 getOptional<std::vector<Group>>(
"groups", p.groups, j);
10643 JSON_SERIALIZED_CLASS(BridgingConfiguration)
10655 IMPLEMENT_JSON_SERIALIZATION()
10677 static void to_json(nlohmann::json& j,
const BridgingConfiguration& p)
10679 j = nlohmann::json{
10680 TOJSON_IMPL(bridges),
10681 TOJSON_IMPL(groups)
10684 static void from_json(
const nlohmann::json& j, BridgingConfiguration& p)
10687 getOptional<std::vector<Bridge>>(
"bridges", p.bridges, j);
10688 getOptional<std::vector<Group>>(
"groups", p.groups, j);
10692 JSON_SERIALIZED_CLASS(BridgingServerStatusReportConfiguration)
10704 IMPLEMENT_JSON_SERIALIZATION()
10739 includeGroupDetail =
false;
10740 includeBridgeDetail =
false;
10741 includeBridgeGroupDetail =
false;
10746 static void to_json(nlohmann::json& j,
const BridgingServerStatusReportConfiguration& p)
10748 j = nlohmann::json{
10749 TOJSON_IMPL(fileName),
10750 TOJSON_IMPL(intervalSecs),
10751 TOJSON_IMPL(enabled),
10752 TOJSON_IMPL(includeGroupDetail),
10753 TOJSON_IMPL(includeBridgeDetail),
10754 TOJSON_IMPL(includeBridgeGroupDetail),
10755 TOJSON_IMPL(runCmd)
10758 static void from_json(
const nlohmann::json& j, BridgingServerStatusReportConfiguration& p)
10761 getOptional<std::string>(
"fileName", p.fileName, j);
10762 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
10763 getOptional<bool>(
"enabled", p.enabled, j,
false);
10764 getOptional<std::string>(
"runCmd", p.runCmd, j);
10765 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
10766 getOptional<bool>(
"includeBridgeDetail", p.includeBridgeDetail, j,
false);
10767 getOptional<bool>(
"includeBridgeGroupDetail", p.includeBridgeGroupDetail, j,
false);
10771 JSON_SERIALIZED_CLASS(BridgingServerInternals)
10785 IMPLEMENT_JSON_SERIALIZATION()
10803 housekeeperIntervalMs = 1000;
10807 static void to_json(nlohmann::json& j,
const BridgingServerInternals& p)
10809 j = nlohmann::json{
10810 TOJSON_IMPL(watchdog),
10811 TOJSON_IMPL(housekeeperIntervalMs)
10814 static void from_json(
const nlohmann::json& j, BridgingServerInternals& p)
10817 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
10818 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
10822 JSON_SERIALIZED_CLASS(BridgingServerConfiguration)
10833 IMPLEMENT_JSON_SERIALIZATION()
10844 omPayloadTransformation = 1,
10847 omAnonymousMixing = 2,
10850 omLanguageTranslation = 3
10907 serviceConfigurationFileCheckSecs = 60;
10908 bridgingConfigurationFileName.clear();
10909 bridgingConfigurationFileCommand.clear();
10910 bridgingConfigurationFileCheckSecs = 60;
10911 statusReport.clear();
10912 externalHealthCheckResponder.clear();
10914 certStoreFileName.clear();
10915 certStorePasswordHex.clear();
10916 enginePolicy.clear();
10917 configurationCheckSignalName =
"rts.6cc0651.${id}";
10918 fipsCrypto.clear();
10923 static void to_json(nlohmann::json& j,
const BridgingServerConfiguration& p)
10925 j = nlohmann::json{
10928 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
10929 TOJSON_IMPL(bridgingConfigurationFileName),
10930 TOJSON_IMPL(bridgingConfigurationFileCommand),
10931 TOJSON_IMPL(bridgingConfigurationFileCheckSecs),
10932 TOJSON_IMPL(statusReport),
10933 TOJSON_IMPL(externalHealthCheckResponder),
10934 TOJSON_IMPL(internals),
10935 TOJSON_IMPL(certStoreFileName),
10936 TOJSON_IMPL(certStorePasswordHex),
10937 TOJSON_IMPL(enginePolicy),
10938 TOJSON_IMPL(configurationCheckSignalName),
10939 TOJSON_IMPL(fipsCrypto),
10943 static void from_json(
const nlohmann::json& j, BridgingServerConfiguration& p)
10946 getOptional<std::string>(
"id", p.id, j);
10947 getOptional<BridgingServerConfiguration::OpMode_t>(
"mode", p.mode, j, BridgingServerConfiguration::OpMode_t::omRaw);
10948 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
10949 getOptional<std::string>(
"bridgingConfigurationFileName", p.bridgingConfigurationFileName, j);
10950 getOptional<std::string>(
"bridgingConfigurationFileCommand", p.bridgingConfigurationFileCommand, j);
10951 getOptional<int>(
"bridgingConfigurationFileCheckSecs", p.bridgingConfigurationFileCheckSecs, j, 60);
10952 getOptional<BridgingServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10953 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
10954 getOptional<BridgingServerInternals>(
"internals", p.internals, j);
10955 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
10956 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
10957 j.at(
"enginePolicy").get_to(p.enginePolicy);
10958 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.6cc0651.${id}");
10959 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
10960 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
10965 JSON_SERIALIZED_CLASS(EarGroupsConfiguration)
10977 IMPLEMENT_JSON_SERIALIZATION()
10995 static void to_json(nlohmann::json& j,
const EarGroupsConfiguration& p)
10997 j = nlohmann::json{
10998 TOJSON_IMPL(groups)
11001 static void from_json(
const nlohmann::json& j, EarGroupsConfiguration& p)
11004 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11008 JSON_SERIALIZED_CLASS(EarServerStatusReportConfiguration)
11020 IMPLEMENT_JSON_SERIALIZATION()
11049 includeGroupDetail =
false;
11054 static void to_json(nlohmann::json& j,
const EarServerStatusReportConfiguration& p)
11056 j = nlohmann::json{
11057 TOJSON_IMPL(fileName),
11058 TOJSON_IMPL(intervalSecs),
11059 TOJSON_IMPL(enabled),
11060 TOJSON_IMPL(includeGroupDetail),
11061 TOJSON_IMPL(runCmd)
11064 static void from_json(
const nlohmann::json& j, EarServerStatusReportConfiguration& p)
11067 getOptional<std::string>(
"fileName", p.fileName, j);
11068 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11069 getOptional<bool>(
"enabled", p.enabled, j,
false);
11070 getOptional<std::string>(
"runCmd", p.runCmd, j);
11071 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11075 JSON_SERIALIZED_CLASS(EarServerInternals)
11089 IMPLEMENT_JSON_SERIALIZATION()
11107 housekeeperIntervalMs = 1000;
11111 static void to_json(nlohmann::json& j,
const EarServerInternals& p)
11113 j = nlohmann::json{
11114 TOJSON_IMPL(watchdog),
11115 TOJSON_IMPL(housekeeperIntervalMs)
11118 static void from_json(
const nlohmann::json& j, EarServerInternals& p)
11121 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11122 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11126 JSON_SERIALIZED_CLASS(EarServerConfiguration)
11137 IMPLEMENT_JSON_SERIALIZATION()
11192 serviceConfigurationFileCheckSecs = 60;
11193 groupsConfigurationFileName.clear();
11194 groupsConfigurationFileCommand.clear();
11195 groupsConfigurationFileCheckSecs = 60;
11196 statusReport.clear();
11197 externalHealthCheckResponder.clear();
11199 certStoreFileName.clear();
11200 certStorePasswordHex.clear();
11201 enginePolicy.clear();
11202 configurationCheckSignalName =
"rts.9a164fa.${id}";
11203 fipsCrypto.clear();
11208 static void to_json(nlohmann::json& j,
const EarServerConfiguration& p)
11210 j = nlohmann::json{
11212 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11213 TOJSON_IMPL(groupsConfigurationFileName),
11214 TOJSON_IMPL(groupsConfigurationFileCommand),
11215 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
11216 TOJSON_IMPL(statusReport),
11217 TOJSON_IMPL(externalHealthCheckResponder),
11218 TOJSON_IMPL(internals),
11219 TOJSON_IMPL(certStoreFileName),
11220 TOJSON_IMPL(certStorePasswordHex),
11221 TOJSON_IMPL(enginePolicy),
11222 TOJSON_IMPL(configurationCheckSignalName),
11223 TOJSON_IMPL(fipsCrypto),
11227 static void from_json(
const nlohmann::json& j, EarServerConfiguration& p)
11230 getOptional<std::string>(
"id", p.id, j);
11231 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11232 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
11233 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
11234 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
11235 getOptional<EarServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11236 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11237 getOptional<EarServerInternals>(
"internals", p.internals, j);
11238 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11239 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11240 j.at(
"enginePolicy").get_to(p.enginePolicy);
11241 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
11242 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11243 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11247 JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
11259 IMPLEMENT_JSON_SERIALIZATION()
11277 static void to_json(nlohmann::json& j,
const EngageSemGroupsConfiguration& p)
11279 j = nlohmann::json{
11280 TOJSON_IMPL(groups)
11283 static void from_json(
const nlohmann::json& j, EngageSemGroupsConfiguration& p)
11286 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11290 JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
11302 IMPLEMENT_JSON_SERIALIZATION()
11331 includeGroupDetail =
false;
11336 static void to_json(nlohmann::json& j,
const EngageSemServerStatusReportConfiguration& p)
11338 j = nlohmann::json{
11339 TOJSON_IMPL(fileName),
11340 TOJSON_IMPL(intervalSecs),
11341 TOJSON_IMPL(enabled),
11342 TOJSON_IMPL(includeGroupDetail),
11343 TOJSON_IMPL(runCmd)
11346 static void from_json(
const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
11349 getOptional<std::string>(
"fileName", p.fileName, j);
11350 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11351 getOptional<bool>(
"enabled", p.enabled, j,
false);
11352 getOptional<std::string>(
"runCmd", p.runCmd, j);
11353 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11357 JSON_SERIALIZED_CLASS(EngageSemServerInternals)
11371 IMPLEMENT_JSON_SERIALIZATION()
11389 housekeeperIntervalMs = 1000;
11393 static void to_json(nlohmann::json& j,
const EngageSemServerInternals& p)
11395 j = nlohmann::json{
11396 TOJSON_IMPL(watchdog),
11397 TOJSON_IMPL(housekeeperIntervalMs)
11400 static void from_json(
const nlohmann::json& j, EngageSemServerInternals& p)
11403 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11404 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11408 JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
11419 IMPLEMENT_JSON_SERIALIZATION()
11480 serviceConfigurationFileCheckSecs = 60;
11481 groupsConfigurationFileName.clear();
11482 groupsConfigurationFileCommand.clear();
11483 groupsConfigurationFileCheckSecs = 60;
11484 statusReport.clear();
11485 externalHealthCheckResponder.clear();
11487 certStoreFileName.clear();
11488 certStorePasswordHex.clear();
11489 enginePolicy.clear();
11490 configurationCheckSignalName =
"rts.9a164fa.${id}";
11491 fipsCrypto.clear();
11496 maxQueuingMs = 15000;
11502 static void to_json(nlohmann::json& j,
const EngageSemServerConfiguration& p)
11504 j = nlohmann::json{
11506 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11507 TOJSON_IMPL(groupsConfigurationFileName),
11508 TOJSON_IMPL(groupsConfigurationFileCommand),
11509 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
11510 TOJSON_IMPL(statusReport),
11511 TOJSON_IMPL(externalHealthCheckResponder),
11512 TOJSON_IMPL(internals),
11513 TOJSON_IMPL(certStoreFileName),
11514 TOJSON_IMPL(certStorePasswordHex),
11515 TOJSON_IMPL(enginePolicy),
11516 TOJSON_IMPL(configurationCheckSignalName),
11517 TOJSON_IMPL(fipsCrypto),
11519 TOJSON_IMPL(maxQueueLen),
11520 TOJSON_IMPL(minQueuingMs),
11521 TOJSON_IMPL(maxQueuingMs),
11522 TOJSON_IMPL(minPriority),
11523 TOJSON_IMPL(maxPriority)
11526 static void from_json(
const nlohmann::json& j, EngageSemServerConfiguration& p)
11529 getOptional<std::string>(
"id", p.id, j);
11530 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11531 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
11532 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
11533 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
11534 getOptional<EngageSemServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11535 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11536 getOptional<EngageSemServerInternals>(
"internals", p.internals, j);
11537 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11538 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11539 j.at(
"enginePolicy").get_to(p.enginePolicy);
11540 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
11541 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11542 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11543 getOptional<int>(
"maxQueueLen", p.maxQueueLen, j, 64);
11544 getOptional<int>(
"minQueuingMs", p.minQueuingMs, j, 0);
11545 getOptional<int>(
"maxQueuingMs", p.maxQueuingMs, j, 15000);
11546 getOptional<int>(
"minPriority", p.minPriority, j, 0);
11547 getOptional<int>(
"maxPriority", p.maxPriority, j, 255);
11551 static inline void dumpExampleConfigurations(
const char *path)
11553 WatchdogSettings::document();
11554 FileRecordingRequest::document();
11555 Feature::document();
11556 Featureset::document();
11558 RtpPayloadTypeTranslation::document();
11559 NetworkInterfaceDevice::document();
11560 ListOfNetworkInterfaceDevice::document();
11561 RtpHeader::document();
11562 BlobInfo::document();
11563 TxAudioUri::document();
11564 AdvancedTxParams::document();
11565 Identity::document();
11566 Location::document();
11568 Connectivity::document();
11569 PresenceDescriptorGroupItem::document();
11570 PresenceDescriptor::document();
11571 NetworkTxOptions::document();
11572 TcpNetworkTxOptions::document();
11573 NetworkAddress::document();
11574 NetworkAddressRxTx::document();
11575 NetworkAddressRestrictionList::document();
11576 StringRestrictionList::document();
11577 Rallypoint::document();
11578 RallypointCluster::document();
11579 NetworkDeviceDescriptor::document();
11580 TxAudio::document();
11581 AudioDeviceDescriptor::document();
11582 ListOfAudioDeviceDescriptor::document();
11584 TalkerInformation::document();
11585 GroupTalkers::document();
11586 Presence::document();
11587 Advertising::document();
11588 GroupPriorityTranslation::document();
11589 GroupTimeline::document();
11590 GroupAppTransport::document();
11591 RtpProfile::document();
11593 Mission::document();
11594 LicenseDescriptor::document();
11595 EngineNetworkingRpUdpStreaming::document();
11596 EnginePolicyNetworking::document();
11599 Bridge::document();
11600 AndroidAudio::document();
11601 EnginePolicyAudio::document();
11602 SecurityCertificate::document();
11603 EnginePolicySecurity::document();
11604 EnginePolicyLogging::document();
11605 EnginePolicyDatabase::document();
11606 NamedAudioDevice::document();
11607 EnginePolicyNamedAudioDevices::document();
11608 Licensing::document();
11609 DiscoveryMagellan::document();
11610 DiscoverySsdp::document();
11611 DiscoverySap::document();
11612 DiscoveryCistech::document();
11613 DiscoveryTrellisware::document();
11614 DiscoveryConfiguration::document();
11615 EnginePolicyInternals::document();
11616 EnginePolicyTimelines::document();
11617 RtpMapEntry::document();
11618 ExternalModule::document();
11619 ExternalCodecDescriptor::document();
11620 EnginePolicy::document();
11621 TalkgroupAsset::document();
11622 EngageDiscoveredGroup::document();
11623 RallypointPeer::document();
11624 RallypointServerLimits::document();
11625 RallypointServerStatusReportConfiguration::document();
11626 RallypointServerLinkGraph::document();
11627 ExternalHealthCheckResponder::document();
11629 PeeringConfiguration::document();
11630 IgmpSnooping::document();
11631 RallypointReflector::document();
11632 RallypointUdpStreaming::document();
11633 RallypointServer::document();
11634 PlatformDiscoveredService::document();
11635 TimelineQueryParameters::document();
11636 CertStoreCertificate::document();
11637 CertStore::document();
11638 CertStoreCertificateElement::document();
11639 CertStoreDescriptor::document();
11640 CertificateDescriptor::document();
11641 BridgeCreationDetail::document();
11642 GroupConnectionDetail::document();
11643 GroupTxDetail::document();
11644 GroupCreationDetail::document();
11645 GroupReconfigurationDetail::document();
11646 GroupHealthReport::document();
11647 InboundProcessorStats::document();
11648 TrafficCounter::document();
11649 GroupStats::document();
11650 RallypointConnectionDetail::document();
11651 BridgingConfiguration::document();
11652 BridgingServerStatusReportConfiguration::document();
11653 BridgingServerInternals::document();
11654 BridgingServerConfiguration::document();
11655 EarGroupsConfiguration::document();
11656 EarServerStatusReportConfiguration::document();
11657 EarServerInternals::document();
11658 EarServerConfiguration::document();
11659 RangerPackets::document();
11660 TransportImpairment::document();
11662 EngageSemGroupsConfiguration::document();
11663 EngageSemServerStatusReportConfiguration::document();
11664 EngageSemServerInternals::document();
11665 EngageSemServerConfiguration::document();
11670 #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...
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.
bool outputMuted
[Optional, Default: false] Mutes output audio.
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 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....
PayloadType_t
Payload type. BlobInfo RTP supported Payload types.
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
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 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 modes the briging service runs in.
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.
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< 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.
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.
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.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
TODO: Configuration for the EFC 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.
Vad vad
[Optional] Voice activity detection settings
Agc outputAgc
[Optional] Automatic Gain Control for audio outputs
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 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.
EnginePolicyInternals internals
Internal settings.
EnginePolicySecurity security
Security settings.
EnginePolicyTimelines timelines
Timelines settings.
EnginePolicyNetworking networking
Security settings.
Internal Engage Engine settings.
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 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.
SecurityCertificate security
The certificate to use for signing the recording.
long maxEventAgeSecs
Maximum age of an event after which it is to be erased.
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.
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 path
Path where the crypto engine module is located
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...
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.
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).
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....
BridgingOpMode_t bom
Specifies the bridging operation mode if applicable (see BridgingOpMode_t).
BridgingOpMode_t
Enum describing bridging operation mode types where applicable.
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
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 lastMemberQueryCount
TODO.
bool enabled
Enables IGMP. Default is false.
int lastMemberQueryIntervalMs
TODO.
Detailed statistics for an inbound processor.
Helper class for serializing and deserializing the LicenseDescriptor JSON.
std::string entitlement
Entitlement key to use for the product.
std::string cargo
Reserved for internal use.
std::string manufacturerId
[Read only] Manufacturer ID.
std::string key
License Key to be used for the application.
uint8_t cargoFlags
Reserved for internal use.
int type
[Read only] 0 = unknown, 1 = perpetual, 2 = expires
std::string deviceId
[Read only] Unique device identifier generated by the Engine.
int status
The current licensing status.
time_t expires
[Read only] The time that the license key or activation code expires in Unix timestamp - Zulu/UTC.
std::string activationCode
If the key required activation, this is the activation code generated using the entitlement,...
std::string expiresFormatted
[Read only] The time that the license key or activation code expires formatted in ISO 8601 format,...
std::string deviceId
Device Identifier. See LicenseDescriptor::deviceId for details.
std::string manufacturerId
Manufacturer ID to use for the product. See LicenseDescriptor::manufacturerId for details.
std::string activationCode
Activation Code issued for the license key. See LicenseDescriptor::activationCode for details.
std::string key
License key. See LicenseDescriptor::key for details.
std::string entitlement
Entitlement key to use for the product. See LicenseDescriptor::entitlement for details.
std::vector< Group > groups
Array of groups in the configuration.
std::vector< VoiceToVoiceSession > voiceToVoiceSessions
Array of voiceToVoice sessions in the configuration.
Configuration for the linguistics server.
LingoServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string lingoConfigurationFileName
Name of a file containing the linguistics configuration.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
std::string id
A unqiue identifier for the linguistics server.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
std::string lingoConfigurationFileCommand
Command-line to execute that returns a linguistics configuration.
LingoServerInternals internals
Internal settings.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
int lingoConfigurationFileCheckSecs
Number of seconds between checks to see if the linguistics configuration has been updated....
std::string certStoreFileName
Path to the certificate store.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NetworkAddress proxy
Address and port of the proxy.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
Internal translator server settings.
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
WatchdogSettings watchdog
[Optional] Settings for the watchdog.
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...
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 mesh configuration. Change this whenever you update your configuration...
std::string comments
Comments.
std::string id
An identifier useful for organizations that track different mesh 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 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
std::vector< std::string > extraMeshes
[Optional] List of additional meshes that can be reached via this RP
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
std::string meshName
[Optional] This Rallypoint's mesh name
int rolloverSecs
Seconds between switching to a new target.
ConnectionStrategy_t
Connection strategy enum.
int connectionTimeoutSecs
[Optional, Default: 0] 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.
uint64_t msToNextConnectionAttempt
Milliseconds until next connection attempt.
Defines settings for Rallypoint extended group restrictions.
std::vector< StringRestrictionList > restrictions
Restrictions.
int transactionTimeoutMs
[Optional, Default 5000] Number of milliseconds that a transaction may take before the link is consid...
bool allowSelfSignedCertificate
[Optional, Default false] Allows the Rallypoint to accept self-signed certificates from the far-end
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 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
SecurityCertificate certificate
Internal certificate detail.
std::string id
Internal ID.
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.
bool enabled
Internal enablement setting.
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
Vector of additional TX addresses .
NetworkAddress tx
The network address for transmitting network traffic to.
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 mesh leaf to reverse-subscribe to a core node upon the core subscribing and a re...
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 mesh 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.
Licensing licensing
Licensing settings.
PacketCapturer rxCapture
Details for capture of received packets
uint32_t maxOutboundPeerConnectionIntervalDeltaSecs
[Optional, Default 15] Sets the delta value for the maximum number of seconds to delay when attemptin...
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.
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.
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.
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::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
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 enabled
[Default: false] Websocket is enabled
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.
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.