20#ifndef ConfigurationObjects_h
21#define ConfigurationObjects_h
24#include "EngageConstants.h"
33#include <nlohmann/json.hpp>
36 #pragma GCC diagnostic push
37 #pragma GCC diagnostic ignored "-Wunused-function"
40#if !defined(ENGAGE_IGNORE_COMPILER_UNUSED_WARNING)
42 #define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING __attribute__((unused))
44 #define ENGAGE_IGNORE_COMPILER_UNUSED_WARNING
50#if defined(RTS_CORE_BUILD)
51namespace ConfigurationObjects
53namespace AppConfigurationObjects
56 static const char *ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT =
"_attached";
150 } DataSeriesValueType_t;
164 bloodOxygenation = 5,
166 taskEffectiveness = 7
167 } HumanBiometricsTypes_t;
171 static FILE *_internalFileOpener(
const char *fn,
const char *mode)
176 fp = fopen(fn, mode);
178 if(fopen_s(&fp, fn, mode) != 0)
187 #define JSON_SERIALIZED_CLASS(_cn) \
189 static void to_json(nlohmann::json& j, const _cn& p); \
190 static void from_json(const nlohmann::json& j, _cn& p);
192 #define IMPLEMENT_JSON_DOCUMENTATION(_cn) \
194 static void document(const char *path = nullptr) \
197 example.initForDocumenting(); \
198 std::string theJson = example.serialize(3); \
199 std::cout << "------------------------------------------------" << std::endl \
200 << #_cn << std::endl \
201 << theJson << std::endl \
202 << "------------------------------------------------" << std::endl; \
204 if(path != nullptr && path[0] != 0) \
206 std::string fn = path; \
209 fn.append(".json"); \
211 FILE *fp = _internalFileOpener(fn.c_str(), "wt");\
215 fputs(theJson.c_str(), fp); \
220 std::cout << "ERROR: Cannot write to " << fn << std::endl; \
224 static const char *className() \
229 #define IMPLEMENT_JSON_SERIALIZATION() \
231 bool deserialize(const char *s) \
235 if(s != nullptr && s[0] != 0) \
237 from_json(nlohmann::json::parse(s), *this); \
251 std::string serialize(const int indent = -1) \
257 return j.dump(indent); \
261 return std::string("{}"); \
265 #define IMPLEMENT_WRAPPED_JSON_SERIALIZATION(_cn) \
267 std::string serializeWrapped(const int indent = -1) \
276 firstChar[0] = #_cn[0]; \
278 firstChar[0] = tolower(firstChar[0]); \
280 rc.append(firstChar); \
281 rc.append((#_cn) + 1); \
283 rc.append(j.dump(indent)); \
290 return std::string("{}"); \
294 #define TOJSON_IMPL(__var) \
297 #define FROMJSON_IMPL_SIMPLE(__var) \
298 getOptional(#__var, p.__var, j)
300 #define FROMJSON_IMPL(__var, __type, __default) \
301 getOptional<__type>(#__var, p.__var, j, __default)
303 #define TOJSON_BASE_IMPL() \
304 to_json(j, (ConfigurationObjectBase&)p)
306 #define FROMJSON_BASE_IMPL() \
307 from_json(j, (ConfigurationObjectBase&)p);
311 static std::string EMPTY_STRING;
314 static void getOptional(
const char *name, T& v,
const nlohmann::json& j, T def)
320 j.at(name).get_to(v);
334 static void getOptional(
const char *name, T& v,
const nlohmann::json& j)
340 j.at(name).get_to(v);
349 static void getOptionalWithIndicator(
const char *name, T& v,
const nlohmann::json& j, T def,
bool *wasFound)
355 j.at(name).get_to(v);
372 static void getOptionalWithIndicator(
const char *name, T& v,
const nlohmann::json& j,
bool *wasFound)
378 j.at(name).get_to(v);
397 _documenting =
false;
404 virtual void initForDocumenting()
409 virtual std::string toString()
411 return std::string(
"");
414 inline virtual bool isDocumenting()
const
419 nlohmann::json _attached;
429 if(p._attached !=
nullptr)
431 j[ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT] = p._attached;
438 static void from_json(
const nlohmann::json& j, ConfigurationObjectBase& p)
442 if(j.contains(ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT))
444 p._attached = j.at(ENGAGE_CONFIGURATION_OBJECT_ATTACHED_OBJECT);
453 JSON_SERIALIZED_CLASS(TuningSettings)
456 IMPLEMENT_JSON_SERIALIZATION()
500 maxPooledRtpObjects = 0;
501 maxActiveRtpObjects = 0;
504 maxPooledBlobObjects = 0;
505 maxActiveBlobObjects = 0;
507 maxPooledBufferMb = 0;
508 maxPooledBufferObjects = 0;
509 maxActiveBufferObjects = 0;
511 maxActiveRtpProcessors = 0;
514 virtual void initForDocumenting()
520 static void to_json(nlohmann::json& j,
const TuningSettings& p)
523 TOJSON_IMPL(maxPooledRtpMb),
524 TOJSON_IMPL(maxPooledRtpObjects),
525 TOJSON_IMPL(maxActiveRtpObjects),
527 TOJSON_IMPL(maxPooledBlobMb),
528 TOJSON_IMPL(maxPooledBlobObjects),
529 TOJSON_IMPL(maxActiveBlobObjects),
531 TOJSON_IMPL(maxPooledBufferMb),
532 TOJSON_IMPL(maxPooledBufferObjects),
533 TOJSON_IMPL(maxActiveBufferObjects),
535 TOJSON_IMPL(maxActiveRtpProcessors)
538 static void from_json(
const nlohmann::json& j, TuningSettings& p)
541 FROMJSON_IMPL(maxPooledRtpMb, uint32_t, 0);
542 FROMJSON_IMPL(maxPooledRtpObjects, uint32_t, 0);
543 FROMJSON_IMPL(maxActiveRtpObjects, uint32_t, 0);
545 FROMJSON_IMPL(maxPooledBlobMb, uint32_t, 0);
546 FROMJSON_IMPL(maxPooledBlobObjects, uint32_t, 0);
547 FROMJSON_IMPL(maxActiveBlobObjects, uint32_t, 0);
549 FROMJSON_IMPL(maxPooledBufferMb, uint32_t, 0);
550 FROMJSON_IMPL(maxPooledBufferObjects, uint32_t, 0);
551 FROMJSON_IMPL(maxActiveBufferObjects, uint32_t, 0);
553 FROMJSON_IMPL(maxActiveRtpProcessors, uint32_t, 0);
558 JSON_SERIALIZED_CLASS(FipsCryptoSettings)
561 IMPLEMENT_JSON_SERIALIZATION()
586 virtual void initForDocumenting()
592 static void to_json(nlohmann::json& j,
const FipsCryptoSettings& p)
595 TOJSON_IMPL(enabled),
600 static void from_json(
const nlohmann::json& j, FipsCryptoSettings& p)
603 FROMJSON_IMPL_SIMPLE(enabled);
604 FROMJSON_IMPL_SIMPLE(path);
605 FROMJSON_IMPL_SIMPLE(debug);
610 JSON_SERIALIZED_CLASS(WatchdogSettings)
613 IMPLEMENT_JSON_SERIALIZATION()
641 hangDetectionMs = 2000;
643 slowExecutionThresholdMs = 100;
646 virtual void initForDocumenting()
652 static void to_json(nlohmann::json& j,
const WatchdogSettings& p)
655 TOJSON_IMPL(enabled),
656 TOJSON_IMPL(intervalMs),
657 TOJSON_IMPL(hangDetectionMs),
658 TOJSON_IMPL(abortOnHang),
659 TOJSON_IMPL(slowExecutionThresholdMs)
662 static void from_json(
const nlohmann::json& j, WatchdogSettings& p)
665 getOptional<bool>(
"enabled", p.enabled, j,
true);
666 getOptional<int>(
"intervalMs", p.intervalMs, j, 5000);
667 getOptional<int>(
"hangDetectionMs", p.hangDetectionMs, j, 2000);
668 getOptional<bool>(
"abortOnHang", p.abortOnHang, j,
true);
669 getOptional<int>(
"slowExecutionThresholdMs", p.slowExecutionThresholdMs, j, 100);
674 JSON_SERIALIZED_CLASS(FileRecordingRequest)
677 IMPLEMENT_JSON_SERIALIZATION()
682 std::string fileName;
697 virtual void initForDocumenting()
700 id =
"1-2-3-4-5-6-7-8-9";
701 fileName =
"/tmp/test.wav";
710 TOJSON_IMPL(fileName),
714 static void from_json(
const nlohmann::json& j, FileRecordingRequest& p)
717 j.at(
"id").get_to(p.id);
718 j.at(
"fileName").get_to(p.fileName);
719 getOptional<uint32_t>(
"maxMs", p.maxMs, j, 60000);
724 JSON_SERIALIZED_CLASS(Feature)
727 IMPLEMENT_JSON_SERIALIZATION()
728 IMPLEMENT_JSON_DOCUMENTATION(
Feature)
733 std::string description;
734 std::string comments;
753 virtual void initForDocumenting()
756 id =
"{af9540d1-3e86-4fa6-8b80-e26daecb61ab}";
757 name =
"A sample feature";
758 description =
"This is an example of a feature";
759 comments =
"These are comments for this feature";
765 static void to_json(nlohmann::json& j,
const Feature& p)
770 TOJSON_IMPL(description),
771 TOJSON_IMPL(comments),
776 static void from_json(
const nlohmann::json& j, Feature& p)
779 j.at(
"id").get_to(p.id);
780 getOptional(
"name", p.name, j);
781 getOptional(
"description", p.description, j);
782 getOptional(
"comments", p.comments, j);
783 getOptional(
"count", p.count, j, 0);
791 JSON_SERIALIZED_CLASS(Featureset)
794 IMPLEMENT_JSON_SERIALIZATION()
798 std::string signature;
800 std::vector<Feature> features;
810 lockToDeviceId =
false;
814 virtual void initForDocumenting()
817 signature =
"c39df3f36c6444e686e47e70fc45cf91e6ed2d8de62d4a1e89f507d567ff48aaabb1a70e54b44377b46fc4a1a2e319e5b77e4abffc444db98f8eb55d709aad5f";
818 lockToDeviceId =
false;
822 static void to_json(nlohmann::json& j,
const Featureset& p)
825 TOJSON_IMPL(signature),
826 TOJSON_IMPL(lockToDeviceId),
827 TOJSON_IMPL(features)
830 static void from_json(
const nlohmann::json& j, Featureset& p)
833 getOptional(
"signature", p.signature, j);
834 getOptional<bool>(
"lockToDeviceId", p.lockToDeviceId, j,
false);
835 getOptional<std::vector<Feature>>(
"features", p.features, j);
840 JSON_SERIALIZED_CLASS(Agc)
851 IMPLEMENT_JSON_SERIALIZATION()
852 IMPLEMENT_JSON_DOCUMENTATION(
Agc)
883 compressionGainDb = 25;
884 enableLimiter =
false;
889 static void to_json(nlohmann::json& j,
const Agc& p)
892 TOJSON_IMPL(enabled),
893 TOJSON_IMPL(minLevel),
894 TOJSON_IMPL(maxLevel),
895 TOJSON_IMPL(compressionGainDb),
896 TOJSON_IMPL(enableLimiter),
897 TOJSON_IMPL(targetLevelDb)
900 static void from_json(
const nlohmann::json& j, Agc& p)
903 getOptional<bool>(
"enabled", p.enabled, j,
false);
904 getOptional<int>(
"minLevel", p.minLevel, j, 0);
905 getOptional<int>(
"maxLevel", p.maxLevel, j, 255);
906 getOptional<int>(
"compressionGainDb", p.compressionGainDb, j, 25);
907 getOptional<bool>(
"enableLimiter", p.enableLimiter, j,
false);
908 getOptional<int>(
"targetLevelDb", p.targetLevelDb, j, 3);
913 JSON_SERIALIZED_CLASS(RtpPayloadTypeTranslation)
924 IMPLEMENT_JSON_SERIALIZATION()
945 bool matches(
const RtpPayloadTypeTranslation& other)
947 return ( (external == other.external) && (engage == other.engage) );
951 static void to_json(nlohmann::json& j,
const RtpPayloadTypeTranslation& p)
954 TOJSON_IMPL(external),
958 static void from_json(
const nlohmann::json& j, RtpPayloadTypeTranslation& p)
961 getOptional<uint16_t>(
"external", p.external, j);
962 getOptional<uint16_t>(
"engage", p.engage, j);
966 JSON_SERIALIZED_CLASS(NetworkInterfaceDevice)
969 IMPLEMENT_JSON_SERIALIZATION()
974 std::string friendlyName;
975 std::string description;
980 bool supportsMulticast;
981 std::string hardwareAddress;
991 friendlyName.clear();
997 supportsMulticast =
false;
998 hardwareAddress.clear();
1001 virtual void initForDocumenting()
1005 friendlyName =
"Wi-Fi";
1006 description =
"A wi-fi adapter";
1008 address =
"127.0.0.1";
1011 supportsMulticast =
false;
1012 hardwareAddress =
"DE:AD:BE:EF:01:02:03";
1020 TOJSON_IMPL(friendlyName),
1021 TOJSON_IMPL(description),
1022 TOJSON_IMPL(family),
1023 TOJSON_IMPL(address),
1024 TOJSON_IMPL(available),
1025 TOJSON_IMPL(isLoopback),
1026 TOJSON_IMPL(supportsMulticast),
1027 TOJSON_IMPL(hardwareAddress)
1030 static void from_json(
const nlohmann::json& j, NetworkInterfaceDevice& p)
1033 getOptional(
"name", p.name, j);
1034 getOptional(
"friendlyName", p.friendlyName, j);
1035 getOptional(
"description", p.description, j);
1036 getOptional(
"family", p.family, j, -1);
1037 getOptional(
"address", p.address, j);
1038 getOptional(
"available", p.available, j,
false);
1039 getOptional(
"isLoopback", p.isLoopback, j,
false);
1040 getOptional(
"supportsMulticast", p.supportsMulticast, j,
false);
1041 getOptional(
"hardwareAddress", p.hardwareAddress, j);
1045 JSON_SERIALIZED_CLASS(ListOfNetworkInterfaceDevice)
1048 IMPLEMENT_JSON_SERIALIZATION()
1052 std::vector<NetworkInterfaceDevice> list;
1071 static void from_json(
const nlohmann::json& j, ListOfNetworkInterfaceDevice& p)
1074 getOptional<std::vector<NetworkInterfaceDevice>>(
"list", p.list, j);
1079 JSON_SERIALIZED_CLASS(RtpHeader)
1090 IMPLEMENT_JSON_SERIALIZATION()
1124 virtual void initForDocumenting()
1135 static void to_json(nlohmann::json& j,
const RtpHeader& p)
1141 TOJSON_IMPL(marker),
1148 static void from_json(
const nlohmann::json& j, RtpHeader& p)
1151 getOptional<int>(
"pt", p.pt, j, -1);
1152 getOptional<bool>(
"marker", p.marker, j,
false);
1153 getOptional<uint16_t>(
"seq", p.seq, j, 0);
1154 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
1155 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1159 JSON_SERIALIZED_CLASS(BlobInfo)
1170 IMPLEMENT_JSON_SERIALIZATION()
1171 IMPLEMENT_JSON_DOCUMENTATION(
BlobInfo)
1186 bptJsonTextUtf8 = 2,
1192 bptEngageBinaryHumanBiometrics = 4,
1195 bptAppMimeMessage = 5,
1198 bptEngageInternal = 42
1233 payloadType = PayloadType_t::bptUndefined;
1238 virtual void initForDocumenting()
1241 rtpHeader.initForDocumenting();
1245 static void to_json(nlohmann::json& j,
const BlobInfo& p)
1249 TOJSON_IMPL(source),
1250 TOJSON_IMPL(target),
1251 TOJSON_IMPL(rtpHeader),
1252 TOJSON_IMPL(payloadType),
1254 TOJSON_IMPL(txnTimeoutSecs)
1257 static void from_json(
const nlohmann::json& j, BlobInfo& p)
1260 getOptional<size_t>(
"size", p.size, j, 0);
1261 getOptional<std::string>(
"source", p.source, j, EMPTY_STRING);
1262 getOptional<std::string>(
"target", p.target, j, EMPTY_STRING);
1263 getOptional<RtpHeader>(
"rtpHeader", p.rtpHeader, j);
1264 getOptional<BlobInfo::PayloadType_t>(
"payloadType", p.payloadType, j, BlobInfo::PayloadType_t::bptUndefined);
1265 getOptional<std::string>(
"txnId", p.txnId, j, EMPTY_STRING);
1266 getOptional<int>(
"txnTimeoutSecs", p.txnTimeoutSecs, j, 0);
1271 JSON_SERIALIZED_CLASS(TxAudioUri)
1285 IMPLEMENT_JSON_SERIALIZATION()
1306 virtual void initForDocumenting()
1311 static void to_json(nlohmann::json& j,
const TxAudioUri& p)
1315 TOJSON_IMPL(repeatCount)
1318 static void from_json(
const nlohmann::json& j, TxAudioUri& p)
1321 getOptional<std::string>(
"uri", p.uri, j, EMPTY_STRING);
1322 getOptional<int>(
"repeatCount", p.repeatCount, j, 0);
1327 JSON_SERIALIZED_CLASS(AdvancedTxParams)
1341 IMPLEMENT_JSON_SERIALIZATION()
1386 includeNodeId =
false;
1391 aliasSpecializer = 0;
1392 receiverRxMuteForAliasSpecializer =
false;
1395 virtual void initForDocumenting()
1400 static void to_json(nlohmann::json& j,
const AdvancedTxParams& p)
1404 TOJSON_IMPL(priority),
1405 TOJSON_IMPL(subchannelTag),
1406 TOJSON_IMPL(includeNodeId),
1410 TOJSON_IMPL(audioUri),
1411 TOJSON_IMPL(aliasSpecializer),
1412 TOJSON_IMPL(receiverRxMuteForAliasSpecializer)
1415 static void from_json(
const nlohmann::json& j, AdvancedTxParams& p)
1418 getOptional<uint16_t>(
"flags", p.flags, j, 0);
1419 getOptional<uint8_t>(
"priority", p.priority, j, 0);
1420 getOptional<uint16_t>(
"subchannelTag", p.subchannelTag, j, 0);
1421 getOptional<bool>(
"includeNodeId", p.includeNodeId, j,
false);
1422 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
1423 getOptional<bool>(
"muted", p.muted, j,
false);
1424 getOptional<uint32_t>(
"txId", p.txId, j, 0);
1425 getOptional<TxAudioUri>(
"audioUri", p.audioUri, j);
1426 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
1427 getOptional<bool>(
"receiverRxMuteForAliasSpecializer", p.receiverRxMuteForAliasSpecializer, j,
false);
1431 JSON_SERIALIZED_CLASS(Identity)
1445 IMPLEMENT_JSON_SERIALIZATION()
1446 IMPLEMENT_JSON_DOCUMENTATION(
Identity)
1476 displayName.clear();
1480 virtual void initForDocumenting()
1485 static void to_json(nlohmann::json& j,
const Identity& p)
1488 TOJSON_IMPL(nodeId),
1489 TOJSON_IMPL(userId),
1490 TOJSON_IMPL(displayName),
1494 static void from_json(
const nlohmann::json& j, Identity& p)
1497 getOptional<std::string>(
"nodeId", p.nodeId, j);
1498 getOptional<std::string>(
"userId", p.userId, j);
1499 getOptional<std::string>(
"displayName", p.displayName, j);
1500 getOptional<std::string>(
"avatar", p.avatar, j);
1505 JSON_SERIALIZED_CLASS(Location)
1519 IMPLEMENT_JSON_SERIALIZATION()
1520 IMPLEMENT_JSON_DOCUMENTATION(
Location)
1523 constexpr static double INVALID_LOCATION_VALUE = -999.999;
1551 latitude = INVALID_LOCATION_VALUE;
1552 longitude = INVALID_LOCATION_VALUE;
1553 altitude = INVALID_LOCATION_VALUE;
1554 direction = INVALID_LOCATION_VALUE;
1555 speed = INVALID_LOCATION_VALUE;
1558 virtual void initForDocumenting()
1564 longitude = 456.789;
1571 static void to_json(nlohmann::json& j,
const Location& p)
1573 if(p.latitude != Location::INVALID_LOCATION_VALUE && p.longitude != Location::INVALID_LOCATION_VALUE)
1576 TOJSON_IMPL(latitude),
1577 TOJSON_IMPL(longitude),
1580 if(p.ts != 0) j[
"ts"] = p.ts;
1581 if(p.altitude != Location::INVALID_LOCATION_VALUE) j[
"altitude"] = p.altitude;
1582 if(p.speed != Location::INVALID_LOCATION_VALUE) j[
"speed"] = p.speed;
1583 if(p.direction != Location::INVALID_LOCATION_VALUE) j[
"direction"] = p.direction;
1586 static void from_json(
const nlohmann::json& j, Location& p)
1589 getOptional<uint32_t>(
"ts", p.ts, j, 0);
1590 j.at(
"latitude").get_to(p.latitude);
1591 j.at(
"longitude").get_to(p.longitude);
1592 getOptional<double>(
"altitude", p.altitude, j, Location::INVALID_LOCATION_VALUE);
1593 getOptional<double>(
"direction", p.direction, j, Location::INVALID_LOCATION_VALUE);
1594 getOptional<double>(
"speed", p.speed, j, Location::INVALID_LOCATION_VALUE);
1598 JSON_SERIALIZED_CLASS(Power)
1610 IMPLEMENT_JSON_SERIALIZATION()
1611 IMPLEMENT_JSON_DOCUMENTATION(
Power)
1657 virtual void initForDocumenting()
1662 static void to_json(nlohmann::json& j,
const Power& p)
1664 if(p.source != 0 && p.state != 0 && p.level != 0)
1667 TOJSON_IMPL(source),
1673 static void from_json(
const nlohmann::json& j, Power& p)
1676 getOptional<int>(
"source", p.source, j, 0);
1677 getOptional<int>(
"state", p.state, j, 0);
1678 getOptional<int>(
"level", p.level, j, 0);
1683 JSON_SERIALIZED_CLASS(Connectivity)
1695 IMPLEMENT_JSON_SERIALIZATION()
1732 virtual void initForDocumenting()
1742 static void to_json(nlohmann::json& j,
const Connectivity& p)
1748 TOJSON_IMPL(strength),
1753 static void from_json(
const nlohmann::json& j, Connectivity& p)
1756 getOptional<int>(
"type", p.type, j, 0);
1757 getOptional<int>(
"strength", p.strength, j, 0);
1758 getOptional<int>(
"rating", p.rating, j, 0);
1763 JSON_SERIALIZED_CLASS(PresenceDescriptorGroupItem)
1775 IMPLEMENT_JSON_SERIALIZATION()
1800 virtual void initForDocumenting()
1802 groupId =
"{123-456}";
1808 static void to_json(nlohmann::json& j,
const PresenceDescriptorGroupItem& p)
1811 TOJSON_IMPL(groupId),
1816 static void from_json(
const nlohmann::json& j, PresenceDescriptorGroupItem& p)
1819 getOptional<std::string>(
"groupId", p.groupId, j);
1820 getOptional<std::string>(
"alias", p.alias, j);
1821 getOptional<uint16_t>(
"status", p.status, j);
1826 JSON_SERIALIZED_CLASS(PresenceDescriptor)
1838 IMPLEMENT_JSON_SERIALIZATION()
1916 groupAliases.clear();
1919 announceOnReceive =
false;
1920 connectivity.clear();
1924 virtual void initForDocumenting()
1931 identity.initForDocumenting();
1932 comment =
"This is a comment";
1935 PresenceDescriptorGroupItem gi;
1936 gi.initForDocumenting();
1937 groupAliases.push_back(gi);
1939 location.initForDocumenting();
1941 announceOnReceive =
true;
1942 connectivity.initForDocumenting();
1943 power.initForDocumenting();
1947 static void to_json(nlohmann::json& j,
const PresenceDescriptor& p)
1951 TOJSON_IMPL(nextUpdate),
1952 TOJSON_IMPL(identity),
1953 TOJSON_IMPL(comment),
1954 TOJSON_IMPL(disposition),
1955 TOJSON_IMPL(groupAliases),
1956 TOJSON_IMPL(location),
1957 TOJSON_IMPL(custom),
1958 TOJSON_IMPL(announceOnReceive),
1959 TOJSON_IMPL(connectivity),
1963 if(!p.comment.empty()) j[
"comment"] = p.comment;
1964 if(!p.custom.empty()) j[
"custom"] = p.custom;
1971 static void from_json(
const nlohmann::json& j, PresenceDescriptor& p)
1974 getOptional<bool>(
"self", p.self, j);
1975 getOptional<uint32_t>(
"ts", p.ts, j);
1976 getOptional<uint32_t>(
"nextUpdate", p.nextUpdate, j);
1977 getOptional<Identity>(
"identity", p.identity, j);
1978 getOptional<std::string>(
"comment", p.comment, j);
1979 getOptional<uint32_t>(
"disposition", p.disposition, j);
1980 getOptional<std::vector<PresenceDescriptorGroupItem>>(
"groupAliases", p.groupAliases, j);
1981 getOptional<Location>(
"location", p.location, j);
1982 getOptional<std::string>(
"custom", p.custom, j);
1983 getOptional<bool>(
"announceOnReceive", p.announceOnReceive, j);
1984 getOptional<Connectivity>(
"connectivity", p.connectivity, j);
1985 getOptional<Power>(
"power", p.power, j);
2026 } AddressResolutionPolicy_t;
2029 JSON_SERIALIZED_CLASS(NetworkTxOptions)
2043 IMPLEMENT_JSON_SERIALIZATION()
2068 virtual void initForDocumenting()
2073 static void to_json(nlohmann::json& j,
const NetworkTxOptions& p)
2076 TOJSON_IMPL(priority),
2080 static void from_json(
const nlohmann::json& j, NetworkTxOptions& p)
2083 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2084 getOptional<int>(
"ttl", p.ttl, j, 1);
2089 JSON_SERIALIZED_CLASS(TcpNetworkTxOptions)
2099 IMPLEMENT_JSON_SERIALIZATION()
2114 virtual void initForDocumenting()
2122 TOJSON_IMPL(priority),
2126 static void from_json(
const nlohmann::json& j, TcpNetworkTxOptions& p)
2129 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
2130 getOptional<int>(
"ttl", p.ttl, j, -1);
2146 JSON_SERIALIZED_CLASS(NetworkAddress)
2159 IMPLEMENT_JSON_SERIALIZATION()
2180 bool matches(
const NetworkAddress& other)
2182 if(address.compare(other.address) != 0)
2187 if(port != other.port)
2196 static void to_json(nlohmann::json& j,
const NetworkAddress& p)
2199 TOJSON_IMPL(address),
2203 static void from_json(
const nlohmann::json& j, NetworkAddress& p)
2206 getOptional<std::string>(
"address", p.address, j);
2207 getOptional<int>(
"port", p.port, j);
2212 JSON_SERIALIZED_CLASS(NetworkAddressRxTx)
2225 IMPLEMENT_JSON_SERIALIZATION()
2247 static void to_json(nlohmann::json& j,
const NetworkAddressRxTx& p)
2254 static void from_json(
const nlohmann::json& j, NetworkAddressRxTx& p)
2257 getOptional<NetworkAddress>(
"rx", p.rx, j);
2258 getOptional<NetworkAddress>(
"tx", p.tx, j);
2269 } GroupRestrictionAccessPolicyType_t;
2271 static bool isValidGroupRestrictionAccessPolicyType(GroupRestrictionAccessPolicyType_t t)
2273 return (t == GroupRestrictionAccessPolicyType_t::graptPermissive ||
2274 t == GroupRestrictionAccessPolicyType_t::graptStrict );
2288 } RestrictionType_t;
2290 static bool isValidRestrictionType(RestrictionType_t t)
2292 return (t == RestrictionType_t::rtUndefined ||
2293 t == RestrictionType_t::rtWhitelist ||
2294 t == RestrictionType_t::rtBlacklist );
2320 } RestrictionElementType_t;
2322 static bool isValidRestrictionElementType(RestrictionElementType_t t)
2324 return (t == RestrictionElementType_t::retGroupId ||
2325 t == RestrictionElementType_t::retGroupIdPattern ||
2326 t == RestrictionElementType_t::retGenericAccessTagPattern ||
2327 t == RestrictionElementType_t::retCertificateSerialNumberPattern ||
2328 t == RestrictionElementType_t::retCertificateFingerprintPattern ||
2329 t == RestrictionElementType_t::retCertificateSubjectPattern ||
2330 t == RestrictionElementType_t::retCertificateIssuerPattern);
2335 JSON_SERIALIZED_CLASS(NetworkAddressRestrictionList)
2348 IMPLEMENT_JSON_SERIALIZATION()
2365 type = RestrictionType_t::rtUndefined;
2370 static void to_json(nlohmann::json& j,
const NetworkAddressRestrictionList& p)
2374 TOJSON_IMPL(elements)
2377 static void from_json(
const nlohmann::json& j, NetworkAddressRestrictionList& p)
2380 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2381 getOptional<std::vector<NetworkAddressRxTx>>(
"elements", p.elements, j);
2385 JSON_SERIALIZED_CLASS(StringRestrictionList)
2398 IMPLEMENT_JSON_SERIALIZATION()
2413 type = RestrictionType_t::rtUndefined;
2414 elementsType = RestrictionElementType_t::retGroupId;
2424 static void to_json(nlohmann::json& j,
const StringRestrictionList& p)
2428 TOJSON_IMPL(elementsType),
2429 TOJSON_IMPL(elements)
2432 static void from_json(
const nlohmann::json& j, StringRestrictionList& p)
2435 getOptional<RestrictionType_t>(
"type", p.type, j, RestrictionType_t::rtUndefined);
2436 getOptional<RestrictionElementType_t>(
"elementsType", p.elementsType, j, RestrictionElementType_t::retGroupId);
2437 getOptional<std::vector<std::string>>(
"elements", p.elements, j);
2442 JSON_SERIALIZED_CLASS(PacketCapturer)
2453 IMPLEMENT_JSON_SERIALIZATION()
2459 std::string filePrefix;
2477 TOJSON_IMPL(enabled),
2479 TOJSON_IMPL(filePrefix)
2482 static void from_json(
const nlohmann::json& j, PacketCapturer& p)
2485 getOptional<bool>(
"enabled", p.enabled, j,
false);
2486 getOptional<uint32_t>(
"maxMb", p.maxMb, j, 10);
2487 getOptional<std::string>(
"filePrefix", p.filePrefix, j, EMPTY_STRING);
2492 JSON_SERIALIZED_CLASS(TransportImpairment)
2503 IMPLEMENT_JSON_SERIALIZATION()
2507 int applicationPercentage;
2518 applicationPercentage = 0;
2527 TOJSON_IMPL(applicationPercentage),
2528 TOJSON_IMPL(jitterMs),
2529 TOJSON_IMPL(lossPercentage)
2532 static void from_json(
const nlohmann::json& j, TransportImpairment& p)
2535 getOptional<int>(
"applicationPercentage", p.applicationPercentage, j, 0);
2536 getOptional<int>(
"jitterMs", p.jitterMs, j, 0);
2537 getOptional<int>(
"lossPercentage", p.lossPercentage, j, 0);
2541 JSON_SERIALIZED_CLASS(NsmNetworking)
2552 IMPLEMENT_JSON_SERIALIZATION()
2556 std::string interfaceName;
2563 std::string cryptoPassword;
2572 interfaceName.clear();
2577 rxImpairment.clear();
2578 txImpairment.clear();
2579 cryptoPassword.clear();
2583 static void to_json(nlohmann::json& j,
const NsmNetworking& p)
2586 TOJSON_IMPL(interfaceName),
2587 TOJSON_IMPL(address),
2590 TOJSON_IMPL(txOversend),
2591 TOJSON_IMPL(rxImpairment),
2592 TOJSON_IMPL(txImpairment),
2593 TOJSON_IMPL(cryptoPassword)
2596 static void from_json(
const nlohmann::json& j, NsmNetworking& p)
2599 getOptional(
"interfaceName", p.interfaceName, j, EMPTY_STRING);
2600 getOptional<NetworkAddress>(
"address", p.address, j);
2601 getOptional<int>(
"ttl", p.ttl, j, 1);
2602 getOptional<int>(
"tos", p.tos, j, 56);
2603 getOptional<int>(
"txOversend", p.txOversend, j, 0);
2604 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
2605 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
2606 getOptional(
"cryptoPassword", p.cryptoPassword, j, EMPTY_STRING);
2611 JSON_SERIALIZED_CLASS(NsmConfiguration)
2622 IMPLEMENT_JSON_SERIALIZATION()
2630 std::vector<std::string> resources;
2634 int transitionSecsFactor;
2644 favorUptime =
false;
2647 tokenStart = 1000000;
2650 transitionSecsFactor = 3;
2658 TOJSON_IMPL(favorUptime),
2659 TOJSON_IMPL(networking),
2660 TOJSON_IMPL(resources),
2661 TOJSON_IMPL(tokenStart),
2662 TOJSON_IMPL(tokenEnd),
2663 TOJSON_IMPL(intervalSecs),
2664 TOJSON_IMPL(transitionSecsFactor)
2667 static void from_json(
const nlohmann::json& j, NsmConfiguration& p)
2670 getOptional(
"id", p.id, j);
2671 getOptional<bool>(
"favorUptime", p.favorUptime, j,
false);
2672 getOptional<NsmNetworking>(
"networking", p.networking, j);
2673 getOptional<std::vector<std::string>>(
"resources", p.resources, j);
2674 getOptional<int>(
"tokenStart", p.tokenStart, j, 1000000);
2675 getOptional<int>(
"tokenEnd", p.tokenEnd, j, 2000000);
2676 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 1);
2677 getOptional<int>(
"transitionSecsFactor", p.transitionSecsFactor, j, 3);
2682 JSON_SERIALIZED_CLASS(Rallypoint)
2692 IMPLEMENT_JSON_SERIALIZATION()
2768 certificate.clear();
2769 certificateKey.clear();
2770 caCertificates.clear();
2772 transactionTimeoutMs = 5000;
2773 disableMessageSigning =
false;
2774 connectionTimeoutSecs = 5;
2775 tcpTxOptions.clear();
2778 bool matches(
const Rallypoint& other)
2780 if(!host.matches(other.host))
2785 if(certificate.compare(other.certificate) != 0)
2790 if(certificateKey.compare(other.certificateKey) != 0)
2795 if(verifyPeer != other.verifyPeer)
2800 if(allowSelfSignedCertificate != other.allowSelfSignedCertificate)
2805 if(caCertificates.size() != other.caCertificates.size())
2810 for(
size_t x = 0; x < caCertificates.size(); x++)
2814 for(
size_t y = 0; y < other.caCertificates.size(); y++)
2816 if(caCertificates[x].compare(other.caCertificates[y]) == 0)
2829 if(transactionTimeoutMs != other.transactionTimeoutMs)
2834 if(disableMessageSigning != other.disableMessageSigning)
2843 static void to_json(nlohmann::json& j,
const Rallypoint& p)
2847 TOJSON_IMPL(certificate),
2848 TOJSON_IMPL(certificateKey),
2849 TOJSON_IMPL(verifyPeer),
2850 TOJSON_IMPL(allowSelfSignedCertificate),
2851 TOJSON_IMPL(caCertificates),
2852 TOJSON_IMPL(transactionTimeoutMs),
2853 TOJSON_IMPL(disableMessageSigning),
2854 TOJSON_IMPL(connectionTimeoutSecs),
2855 TOJSON_IMPL(tcpTxOptions)
2859 static void from_json(
const nlohmann::json& j, Rallypoint& p)
2862 j.at(
"host").get_to(p.host);
2863 getOptional(
"certificate", p.certificate, j);
2864 getOptional(
"certificateKey", p.certificateKey, j);
2865 getOptional<bool>(
"verifyPeer", p.verifyPeer, j,
true);
2866 getOptional<bool>(
"allowSelfSignedCertificate", p.allowSelfSignedCertificate, j,
false);
2867 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
2868 getOptional<int>(
"transactionTimeoutMs", p.transactionTimeoutMs, j, 5000);
2869 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
2870 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
2871 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
2875 JSON_SERIALIZED_CLASS(RallypointCluster)
2888 IMPLEMENT_JSON_SERIALIZATION()
2904 } ConnectionStrategy_t;
2925 connectionStrategy = csRoundRobin;
2926 rallypoints.clear();
2928 connectionTimeoutSecs = 5;
2932 static void to_json(nlohmann::json& j,
const RallypointCluster& p)
2935 TOJSON_IMPL(connectionStrategy),
2936 TOJSON_IMPL(rallypoints),
2937 TOJSON_IMPL(rolloverSecs),
2938 TOJSON_IMPL(connectionTimeoutSecs)
2941 static void from_json(
const nlohmann::json& j, RallypointCluster& p)
2944 getOptional<RallypointCluster::ConnectionStrategy_t>(
"connectionStrategy", p.connectionStrategy, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
2945 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
2946 getOptional<int>(
"rolloverSecs", p.rolloverSecs, j, 10);
2947 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 5);
2952 JSON_SERIALIZED_CLASS(NetworkDeviceDescriptor)
2964 IMPLEMENT_JSON_SERIALIZATION()
3005 manufacturer.clear();
3008 serialNumber.clear();
3013 virtual std::string toString()
3017 snprintf(buff,
sizeof(buff),
"deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
3020 manufacturer.c_str(),
3023 serialNumber.c_str(),
3027 return std::string(buff);
3031 static void to_json(nlohmann::json& j,
const NetworkDeviceDescriptor& p)
3034 TOJSON_IMPL(deviceId),
3036 TOJSON_IMPL(manufacturer),
3038 TOJSON_IMPL(hardwareId),
3039 TOJSON_IMPL(serialNumber),
3044 static void from_json(
const nlohmann::json& j, NetworkDeviceDescriptor& p)
3047 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3048 getOptional(
"name", p.name, j);
3049 getOptional(
"manufacturer", p.manufacturer, j);
3050 getOptional(
"model", p.model, j);
3051 getOptional(
"hardwareId", p.hardwareId, j);
3052 getOptional(
"serialNumber", p.serialNumber, j);
3053 getOptional(
"type", p.type, j);
3054 getOptional(
"extra", p.extra, j);
3058 JSON_SERIALIZED_CLASS(AudioGate)
3069 IMPLEMENT_JSON_SERIALIZATION()
3108 static void to_json(nlohmann::json& j,
const AudioGate& p)
3111 TOJSON_IMPL(enabled),
3112 TOJSON_IMPL(useVad),
3113 TOJSON_IMPL(hangMs),
3114 TOJSON_IMPL(windowMin),
3115 TOJSON_IMPL(windowMax),
3116 TOJSON_IMPL(coefficient)
3119 static void from_json(
const nlohmann::json& j, AudioGate& p)
3122 getOptional<bool>(
"enabled", p.enabled, j,
false);
3123 getOptional<bool>(
"useVad", p.useVad, j,
false);
3124 getOptional<uint32_t>(
"hangMs", p.hangMs, j, 1500);
3125 getOptional<uint32_t>(
"windowMin", p.windowMin, j, 25);
3126 getOptional<uint32_t>(
"windowMax", p.windowMax, j, 125);
3127 getOptional<double>(
"coefficient", p.coefficient, j, 1.75);
3131 JSON_SERIALIZED_CLASS(TxAudio)
3146 IMPLEMENT_JSON_SERIALIZATION()
3147 IMPLEMENT_JSON_DOCUMENTATION(
TxAudio)
3383 encoder = TxAudio::TxCodec_t::ctUnknown;
3384 encoderName.clear();
3390 extensionSendInterval = 10;
3391 initialHeaderBurst = 5;
3392 trailingHeaderBurst = 5;
3393 startTxNotifications = 5;
3394 customRtpPayloadType = -1;
3396 resetRtpOnTx =
true;
3397 enableSmoothing =
true;
3399 smoothedHangTimeMs = 0;
3403 static void to_json(nlohmann::json& j,
const TxAudio& p)
3406 TOJSON_IMPL(enabled),
3407 TOJSON_IMPL(encoder),
3408 TOJSON_IMPL(encoderName),
3409 TOJSON_IMPL(framingMs),
3410 TOJSON_IMPL(blockCount),
3412 TOJSON_IMPL(noHdrExt),
3413 TOJSON_IMPL(maxTxSecs),
3414 TOJSON_IMPL(extensionSendInterval),
3415 TOJSON_IMPL(initialHeaderBurst),
3416 TOJSON_IMPL(trailingHeaderBurst),
3417 TOJSON_IMPL(startTxNotifications),
3418 TOJSON_IMPL(customRtpPayloadType),
3419 TOJSON_IMPL(resetRtpOnTx),
3420 TOJSON_IMPL(enableSmoothing),
3422 TOJSON_IMPL(smoothedHangTimeMs)
3427 static void from_json(
const nlohmann::json& j, TxAudio& p)
3430 getOptional<bool>(
"enabled", p.enabled, j,
true);
3431 getOptional<TxAudio::TxCodec_t>(
"encoder", p.encoder, j, TxAudio::TxCodec_t::ctOpus8000);
3432 getOptional<std::string>(
"encoderName", p.encoderName, j, EMPTY_STRING);
3433 getOptional(
"framingMs", p.framingMs, j, 60);
3434 getOptional(
"blockCount", p.blockCount, j, 0);
3435 getOptional(
"fdx", p.fdx, j,
false);
3436 getOptional(
"noHdrExt", p.noHdrExt, j,
false);
3437 getOptional(
"maxTxSecs", p.maxTxSecs, j, 0);
3438 getOptional(
"extensionSendInterval", p.extensionSendInterval, j, 10);
3439 getOptional(
"initialHeaderBurst", p.initialHeaderBurst, j, 5);
3440 getOptional(
"trailingHeaderBurst", p.trailingHeaderBurst, j, 5);
3441 getOptional(
"startTxNotifications", p.startTxNotifications, j, 5);
3442 getOptional(
"customRtpPayloadType", p.customRtpPayloadType, j, -1);
3443 getOptional(
"resetRtpOnTx", p.resetRtpOnTx, j,
true);
3444 getOptional(
"enableSmoothing", p.enableSmoothing, j,
true);
3445 getOptional(
"dtx", p.dtx, j,
false);
3446 getOptional(
"smoothedHangTimeMs", p.smoothedHangTimeMs, j, 0);
3452 JSON_SERIALIZED_CLASS(AudioDeviceDescriptor)
3464 IMPLEMENT_JSON_SERIALIZATION()
3558 direction = dirUnknown;
3559 boostPercentage = 0;
3564 manufacturer.clear();
3567 serialNumber.clear();
3573 virtual std::string toString()
3577 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",
3585 manufacturer.c_str(),
3588 serialNumber.c_str(),
3594 return std::string(buff);
3598 static void to_json(nlohmann::json& j,
const AudioDeviceDescriptor& p)
3601 TOJSON_IMPL(deviceId),
3602 TOJSON_IMPL(samplingRate),
3603 TOJSON_IMPL(channels),
3604 TOJSON_IMPL(direction),
3605 TOJSON_IMPL(boostPercentage),
3606 TOJSON_IMPL(isAdad),
3608 TOJSON_IMPL(manufacturer),
3610 TOJSON_IMPL(hardwareId),
3611 TOJSON_IMPL(serialNumber),
3612 TOJSON_IMPL(isDefault),
3615 TOJSON_IMPL(isPresent)
3618 static void from_json(
const nlohmann::json& j, AudioDeviceDescriptor& p)
3621 getOptional<int>(
"deviceId", p.deviceId, j, 0);
3622 getOptional<int>(
"samplingRate", p.samplingRate, j, 0);
3623 getOptional<int>(
"channels", p.channels, j, 0);
3624 getOptional<AudioDeviceDescriptor::Direction_t>(
"direction", p.direction, j,
3625 AudioDeviceDescriptor::Direction_t::dirUnknown);
3626 getOptional<int>(
"boostPercentage", p.boostPercentage, j, 0);
3628 getOptional<bool>(
"isAdad", p.isAdad, j,
false);
3629 getOptional(
"name", p.name, j);
3630 getOptional(
"manufacturer", p.manufacturer, j);
3631 getOptional(
"model", p.model, j);
3632 getOptional(
"hardwareId", p.hardwareId, j);
3633 getOptional(
"serialNumber", p.serialNumber, j);
3634 getOptional(
"isDefault", p.isDefault, j);
3635 getOptional(
"type", p.type, j);
3636 getOptional(
"extra", p.extra, j);
3637 getOptional<bool>(
"isPresent", p.isPresent, j,
false);
3641 JSON_SERIALIZED_CLASS(ListOfAudioDeviceDescriptor)
3644 IMPLEMENT_JSON_SERIALIZATION()
3648 std::vector<AudioDeviceDescriptor> list;
3667 static void from_json(
const nlohmann::json& j, ListOfAudioDeviceDescriptor& p)
3670 getOptional<std::vector<AudioDeviceDescriptor>>(
"list", p.list, j);
3674 JSON_SERIALIZED_CLASS(Audio)
3684 IMPLEMENT_JSON_SERIALIZATION()
3685 IMPLEMENT_JSON_DOCUMENTATION(
Audio)
3724 outputLevelLeft = 100;
3725 outputLevelRight = 100;
3726 outputMuted =
false;
3730 static void to_json(nlohmann::json& j,
const Audio& p)
3733 TOJSON_IMPL(enabled),
3734 TOJSON_IMPL(inputId),
3735 TOJSON_IMPL(inputGain),
3736 TOJSON_IMPL(outputId),
3737 TOJSON_IMPL(outputLevelLeft),
3738 TOJSON_IMPL(outputLevelRight),
3739 TOJSON_IMPL(outputMuted)
3742 static void from_json(
const nlohmann::json& j, Audio& p)
3745 getOptional<bool>(
"enabled", p.enabled, j,
true);
3746 getOptional<int>(
"inputId", p.inputId, j, 0);
3747 getOptional<int>(
"inputGain", p.inputGain, j, 0);
3748 getOptional<int>(
"outputId", p.outputId, j, 0);
3749 getOptional<int>(
"outputGain", p.outputGain, j, 0);
3750 getOptional<int>(
"outputLevelLeft", p.outputLevelLeft, j, 100);
3751 getOptional<int>(
"outputLevelRight", p.outputLevelRight, j, 100);
3752 getOptional<bool>(
"outputMuted", p.outputMuted, j,
false);
3756 JSON_SERIALIZED_CLASS(TalkerInformation)
3768 IMPLEMENT_JSON_SERIALIZATION()
3784 matSsrcGenerated = 2
3785 } ManufacturedAliasType_t;
3830 aliasSpecializer = 0;
3832 manufacturedAliasType = ManufacturedAliasType_t::matNone;
3837 static void to_json(nlohmann::json& j,
const TalkerInformation& p)
3841 TOJSON_IMPL(nodeId),
3842 TOJSON_IMPL(rxFlags),
3843 TOJSON_IMPL(txPriority),
3845 TOJSON_IMPL(duplicateCount),
3846 TOJSON_IMPL(aliasSpecializer),
3847 TOJSON_IMPL(rxMuted),
3848 TOJSON_IMPL(manufacturedAliasType),
3852 static void from_json(
const nlohmann::json& j, TalkerInformation& p)
3855 getOptional<std::string>(
"alias", p.alias, j, EMPTY_STRING);
3856 getOptional<std::string>(
"nodeId", p.nodeId, j, EMPTY_STRING);
3857 getOptional<uint16_t>(
"rxFlags", p.rxFlags, j, 0);
3858 getOptional<int>(
"txPriority", p.txPriority, j, 0);
3859 getOptional<uint32_t>(
"txId", p.txId, j, 0);
3860 getOptional<int>(
"duplicateCount", p.duplicateCount, j, 0);
3861 getOptional<uint16_t>(
"aliasSpecializer", p.aliasSpecializer, j, 0);
3862 getOptional<bool>(
"rxMuted", p.rxMuted, j,
false);
3863 getOptional<TalkerInformation::ManufacturedAliasType_t>(
"manufacturedAliasType", p.manufacturedAliasType, j, TalkerInformation::ManufacturedAliasType_t::matNone);
3864 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
3868 JSON_SERIALIZED_CLASS(GroupTalkers)
3882 IMPLEMENT_JSON_SERIALIZATION()
3887 std::vector<TalkerInformation>
list;
3900 static void to_json(nlohmann::json& j,
const GroupTalkers& p)
3906 static void from_json(
const nlohmann::json& j, GroupTalkers& p)
3909 getOptional<std::vector<TalkerInformation>>(
"list", p.list, j);
3913 JSON_SERIALIZED_CLASS(Presence)
3925 IMPLEMENT_JSON_SERIALIZATION()
3926 IMPLEMENT_JSON_DOCUMENTATION(
Presence)
3971 minIntervalSecs = 5;
3975 static void to_json(nlohmann::json& j,
const Presence& p)
3978 TOJSON_IMPL(format),
3979 TOJSON_IMPL(intervalSecs),
3980 TOJSON_IMPL(listenOnly),
3981 TOJSON_IMPL(minIntervalSecs)
3984 static void from_json(
const nlohmann::json& j, Presence& p)
3987 getOptional<Presence::Format_t>(
"format", p.format, j, Presence::Format_t::pfEngage);
3988 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 30);
3989 getOptional<bool>(
"listenOnly", p.listenOnly, j,
false);
3990 getOptional<int>(
"minIntervalSecs", p.minIntervalSecs, j, 5);
3995 JSON_SERIALIZED_CLASS(Advertising)
4007 IMPLEMENT_JSON_SERIALIZATION()
4029 alwaysAdvertise =
false;
4033 static void to_json(nlohmann::json& j,
const Advertising& p)
4036 TOJSON_IMPL(enabled),
4037 TOJSON_IMPL(intervalMs),
4038 TOJSON_IMPL(alwaysAdvertise)
4041 static void from_json(
const nlohmann::json& j, Advertising& p)
4044 getOptional(
"enabled", p.enabled, j,
false);
4045 getOptional<int>(
"intervalMs", p.intervalMs, j, 20000);
4046 getOptional<bool>(
"alwaysAdvertise", p.alwaysAdvertise, j,
false);
4050 JSON_SERIALIZED_CLASS(GroupPriorityTranslation)
4062 IMPLEMENT_JSON_SERIALIZATION()
4088 static void to_json(nlohmann::json& j,
const GroupPriorityTranslation& p)
4093 TOJSON_IMPL(priority)
4096 static void from_json(
const nlohmann::json& j, GroupPriorityTranslation& p)
4099 j.at(
"rx").get_to(p.rx);
4100 j.at(
"tx").get_to(p.tx);
4101 FROMJSON_IMPL(priority,
int, 0);
4105 JSON_SERIALIZED_CLASS(GroupTimeline)
4119 IMPLEMENT_JSON_SERIALIZATION()
4138 maxAudioTimeMs = 30000;
4143 static void to_json(nlohmann::json& j,
const GroupTimeline& p)
4146 TOJSON_IMPL(enabled),
4147 TOJSON_IMPL(maxAudioTimeMs),
4148 TOJSON_IMPL(recordAudio)
4151 static void from_json(
const nlohmann::json& j, GroupTimeline& p)
4154 getOptional(
"enabled", p.enabled, j,
true);
4155 getOptional<int>(
"maxAudioTimeMs", p.maxAudioTimeMs, j, 30000);
4156 getOptional(
"recordAudio", p.recordAudio, j,
true);
4259 IMPLEMENT_JSON_SERIALIZATION()
4281 static void to_json(nlohmann::json& j,
const GroupAppTransport& p)
4284 TOJSON_IMPL(enabled),
4288 static void from_json(
const nlohmann::json& j, GroupAppTransport& p)
4291 getOptional<bool>(
"enabled", p.enabled, j,
false);
4292 getOptional<std::string>(
"id", p.id, j);
4296 JSON_SERIALIZED_CLASS(RtpProfile)
4308 IMPLEMENT_JSON_SERIALIZATION()
4326 jmReleaseOnTxEnd = 2
4389 jitterMaxMs = 10000;
4391 jitterMaxFactor = 8;
4392 jitterTrimPercentage = 10;
4393 jitterUnderrunReductionThresholdMs = 1500;
4394 jitterUnderrunReductionAger = 100;
4395 latePacketSequenceRange = 5;
4396 latePacketTimestampRangeMs = 2000;
4397 inboundProcessorInactivityMs = 500;
4398 jitterForceTrimAtMs = 0;
4399 rtcpPresenceTimeoutMs = 45000;
4400 jitterMaxExceededClipPerc = 10;
4401 jitterMaxExceededClipHangMs = 1500;
4402 zombieLifetimeMs = 15000;
4403 jitterMaxTrimMs = 250;
4404 signalledInboundProcessorInactivityMs = (inboundProcessorInactivityMs * 4);
4408 static void to_json(nlohmann::json& j,
const RtpProfile& p)
4412 TOJSON_IMPL(jitterMaxMs),
4413 TOJSON_IMPL(inboundProcessorInactivityMs),
4414 TOJSON_IMPL(jitterMinMs),
4415 TOJSON_IMPL(jitterMaxFactor),
4416 TOJSON_IMPL(jitterTrimPercentage),
4417 TOJSON_IMPL(jitterUnderrunReductionThresholdMs),
4418 TOJSON_IMPL(jitterUnderrunReductionAger),
4419 TOJSON_IMPL(latePacketSequenceRange),
4420 TOJSON_IMPL(latePacketTimestampRangeMs),
4421 TOJSON_IMPL(inboundProcessorInactivityMs),
4422 TOJSON_IMPL(jitterForceTrimAtMs),
4423 TOJSON_IMPL(jitterMaxExceededClipPerc),
4424 TOJSON_IMPL(jitterMaxExceededClipHangMs),
4425 TOJSON_IMPL(zombieLifetimeMs),
4426 TOJSON_IMPL(jitterMaxTrimMs),
4427 TOJSON_IMPL(signalledInboundProcessorInactivityMs)
4430 static void from_json(
const nlohmann::json& j, RtpProfile& p)
4433 FROMJSON_IMPL(mode, RtpProfile::JitterMode_t, RtpProfile::JitterMode_t::jmStandard);
4434 FROMJSON_IMPL(jitterMaxMs,
int, 10000);
4435 FROMJSON_IMPL(jitterMinMs,
int, 20);
4436 FROMJSON_IMPL(jitterMaxFactor,
int, 8);
4437 FROMJSON_IMPL(jitterTrimPercentage,
int, 10);
4438 FROMJSON_IMPL(jitterUnderrunReductionThresholdMs,
int, 1500);
4439 FROMJSON_IMPL(jitterUnderrunReductionAger,
int, 100);
4440 FROMJSON_IMPL(latePacketSequenceRange,
int, 5);
4441 FROMJSON_IMPL(latePacketTimestampRangeMs,
int, 2000);
4442 FROMJSON_IMPL(inboundProcessorInactivityMs,
int, 500);
4443 FROMJSON_IMPL(jitterForceTrimAtMs,
int, 0);
4444 FROMJSON_IMPL(rtcpPresenceTimeoutMs,
int, 45000);
4445 FROMJSON_IMPL(jitterMaxExceededClipPerc,
int, 10);
4446 FROMJSON_IMPL(jitterMaxExceededClipHangMs,
int, 1500);
4447 FROMJSON_IMPL(zombieLifetimeMs,
int, 15000);
4448 FROMJSON_IMPL(jitterMaxTrimMs,
int, 250);
4449 FROMJSON_IMPL(signalledInboundProcessorInactivityMs,
int, (p.inboundProcessorInactivityMs * 4));
4453 JSON_SERIALIZED_CLASS(Tls)
4465 IMPLEMENT_JSON_SERIALIZATION()
4466 IMPLEMENT_JSON_DOCUMENTATION(
Tls)
4496 allowSelfSignedCertificates =
false;
4497 caCertificates.clear();
4498 subjectRestrictions.clear();
4499 issuerRestrictions.clear();
4504 static void to_json(nlohmann::json& j,
const Tls& p)
4507 TOJSON_IMPL(verifyPeers),
4508 TOJSON_IMPL(allowSelfSignedCertificates),
4509 TOJSON_IMPL(caCertificates),
4510 TOJSON_IMPL(subjectRestrictions),
4511 TOJSON_IMPL(issuerRestrictions),
4512 TOJSON_IMPL(crlSerials)
4515 static void from_json(
const nlohmann::json& j, Tls& p)
4518 getOptional<bool>(
"verifyPeers", p.verifyPeers, j,
true);
4519 getOptional<bool>(
"allowSelfSignedCertificates", p.allowSelfSignedCertificates, j,
false);
4520 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
4521 getOptional<StringRestrictionList>(
"subjectRestrictions", p.subjectRestrictions, j);
4522 getOptional<StringRestrictionList>(
"issuerRestrictions", p.issuerRestrictions, j);
4523 getOptional<std::vector<std::string>>(
"crlSerials", p.crlSerials, j);
4527 JSON_SERIALIZED_CLASS(RangerPackets)
4541 IMPLEMENT_JSON_SERIALIZATION()
4562 virtual void initForDocumenting()
4567 static void to_json(nlohmann::json& j,
const RangerPackets& p)
4570 TOJSON_IMPL(hangTimerSecs),
4574 static void from_json(
const nlohmann::json& j, RangerPackets& p)
4577 getOptional<int>(
"hangTimerSecs", p.hangTimerSecs, j, 11);
4578 getOptional<int>(
"count", p.count, j, 5);
4582 JSON_SERIALIZED_CLASS(Source)
4596 IMPLEMENT_JSON_SERIALIZATION()
4597 IMPLEMENT_JSON_DOCUMENTATION(
Source)
4604 uint8_t _internal_binary_nodeId[ENGAGE_MAX_NODE_ID_SIZE];
4610 uint8_t _internal_binary_alias[ENGAGE_MAX_ALIAS_SIZE];
4620 memset(_internal_binary_nodeId, 0,
sizeof(_internal_binary_nodeId));
4623 memset(_internal_binary_alias, 0,
sizeof(_internal_binary_alias));
4626 virtual void initForDocumenting()
4631 static void to_json(nlohmann::json& j,
const Source& p)
4634 TOJSON_IMPL(nodeId),
4638 static void from_json(
const nlohmann::json& j, Source& p)
4641 FROMJSON_IMPL_SIMPLE(nodeId);
4642 FROMJSON_IMPL_SIMPLE(alias);
4646 JSON_SERIALIZED_CLASS(Group)
4659 IMPLEMENT_JSON_SERIALIZATION()
4660 IMPLEMENT_JSON_DOCUMENTATION(
Group)
4687 bomPayloadTransformation = 1,
4690 bomAnonymousMixing = 2,
4693 bomLanguageTranslation = 3
4700 iagpAnonymousAlias = 0,
4704 } InboundAliasGenerationPolicy_t;
4880 interfaceName.clear();
4886 cryptoPassword.clear();
4890 rallypoints.clear();
4891 rallypointCluster.clear();
4896 blockAdvertising =
false;
4902 enableMulticastFailover =
false;
4903 multicastFailoverSecs = 10;
4905 rtcpPresenceRx.clear();
4907 presenceGroupAffinities.clear();
4908 disablePacketEvents =
false;
4910 rfc4733RtpPayloadId = 0;
4911 inboundRtpPayloadTypeTranslations.clear();
4912 priorityTranslation.clear();
4914 stickyTidHangSecs = 10;
4915 anonymousAlias.clear();
4918 appTransport.clear();
4919 allowLoopback =
false;
4922 rangerPackets.clear();
4924 _wasDeserialized_rtpProfile =
false;
4926 txImpairment.clear();
4927 rxImpairment.clear();
4929 specializerAffinities.clear();
4933 ignoreSources.clear();
4935 languageCode.clear();
4942 inboundAliasGenerationPolicy = iagpAnonymousAlias;
4945 ignoreAudioTraffic =
false;
4949 static void to_json(nlohmann::json& j,
const Group& p)
4956 TOJSON_IMPL(spokenName),
4957 TOJSON_IMPL(interfaceName),
4960 TOJSON_IMPL(txOptions),
4961 TOJSON_IMPL(txAudio),
4962 TOJSON_IMPL(presence),
4963 TOJSON_IMPL(cryptoPassword),
4972 TOJSON_IMPL(timeline),
4973 TOJSON_IMPL(blockAdvertising),
4974 TOJSON_IMPL(source),
4975 TOJSON_IMPL(maxRxSecs),
4976 TOJSON_IMPL(enableMulticastFailover),
4977 TOJSON_IMPL(multicastFailoverSecs),
4978 TOJSON_IMPL(rtcpPresenceRx),
4979 TOJSON_IMPL(presenceGroupAffinities),
4980 TOJSON_IMPL(disablePacketEvents),
4981 TOJSON_IMPL(rfc4733RtpPayloadId),
4982 TOJSON_IMPL(inboundRtpPayloadTypeTranslations),
4983 TOJSON_IMPL(priorityTranslation),
4984 TOJSON_IMPL(stickyTidHangSecs),
4985 TOJSON_IMPL(anonymousAlias),
4986 TOJSON_IMPL(lbCrypto),
4987 TOJSON_IMPL(appTransport),
4988 TOJSON_IMPL(allowLoopback),
4989 TOJSON_IMPL(rangerPackets),
4991 TOJSON_IMPL(txImpairment),
4992 TOJSON_IMPL(rxImpairment),
4994 TOJSON_IMPL(specializerAffinities),
4996 TOJSON_IMPL(securityLevel),
4998 TOJSON_IMPL(ignoreSources),
5000 TOJSON_IMPL(languageCode),
5001 TOJSON_IMPL(synVoice),
5003 TOJSON_IMPL(rxCapture),
5004 TOJSON_IMPL(txCapture),
5006 TOJSON_IMPL(blobRtpPayloadType),
5008 TOJSON_IMPL(inboundAliasGenerationPolicy),
5010 TOJSON_IMPL(gateIn),
5012 TOJSON_IMPL(ignoreAudioTraffic)
5018 if(p._wasDeserialized_rtpProfile || p.isDocumenting())
5020 j[
"rtpProfile"] = p.rtpProfile;
5023 if(p.isDocumenting())
5025 j[
"rallypointCluster"] = p.rallypointCluster;
5026 j[
"rallypoints"] = p.rallypoints;
5031 if(!p.rallypointCluster.rallypoints.empty())
5033 j[
"rallypointCluster"] = p.rallypointCluster;
5035 else if(!p.rallypoints.empty())
5037 j[
"rallypoints"] = p.rallypoints;
5041 static void from_json(
const nlohmann::json& j, Group& p)
5044 j.at(
"type").get_to(p.type);
5045 getOptional<Group::BridgingOpMode_t>(
"bom", p.bom, j, Group::BridgingOpMode_t::bomRaw);
5046 j.at(
"id").get_to(p.id);
5047 getOptional<std::string>(
"name", p.name, j);
5048 getOptional<std::string>(
"spokenName", p.spokenName, j);
5049 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
5050 getOptional<NetworkAddress>(
"rx", p.rx, j);
5051 getOptional<NetworkAddress>(
"tx", p.tx, j);
5052 getOptional<NetworkTxOptions>(
"txOptions", p.txOptions, j);
5053 getOptional<std::string>(
"cryptoPassword", p.cryptoPassword, j);
5054 getOptional<std::string>(
"alias", p.alias, j);
5055 getOptional<TxAudio>(
"txAudio", p.txAudio, j);
5056 getOptional<Presence>(
"presence", p.presence, j);
5057 getOptional<std::vector<Rallypoint>>(
"rallypoints", p.rallypoints, j);
5058 getOptional<RallypointCluster>(
"rallypointCluster", p.rallypointCluster, j);
5059 getOptional<Audio>(
"audio", p.audio, j);
5060 getOptional<GroupTimeline>(
"timeline", p.timeline, j);
5061 getOptional<bool>(
"blockAdvertising", p.blockAdvertising, j,
false);
5062 getOptional<std::string>(
"source", p.source, j);
5063 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
5064 getOptional<bool>(
"enableMulticastFailover", p.enableMulticastFailover, j,
false);
5065 getOptional<int>(
"multicastFailoverSecs", p.multicastFailoverSecs, j, 10);
5066 getOptional<NetworkAddress>(
"rtcpPresenceRx", p.rtcpPresenceRx, j);
5067 getOptional<std::vector<std::string>>(
"presenceGroupAffinities", p.presenceGroupAffinities, j);
5068 getOptional<bool>(
"disablePacketEvents", p.disablePacketEvents, j,
false);
5069 getOptional<int>(
"rfc4733RtpPayloadId", p.rfc4733RtpPayloadId, j, 0);
5070 getOptional<std::vector<RtpPayloadTypeTranslation>>(
"inboundRtpPayloadTypeTranslations", p.inboundRtpPayloadTypeTranslations, j);
5071 getOptional<GroupPriorityTranslation>(
"priorityTranslation", p.priorityTranslation, j);
5072 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
5073 getOptional<std::string>(
"anonymousAlias", p.anonymousAlias, j);
5074 getOptional<bool>(
"lbCrypto", p.lbCrypto, j,
false);
5075 getOptional<GroupAppTransport>(
"appTransport", p.appTransport, j);
5076 getOptional<bool>(
"allowLoopback", p.allowLoopback, j,
false);
5077 getOptionalWithIndicator<RtpProfile>(
"rtpProfile", p.rtpProfile, j, &p._wasDeserialized_rtpProfile);
5078 getOptional<RangerPackets>(
"rangerPackets", p.rangerPackets, j);
5079 getOptional<TransportImpairment>(
"txImpairment", p.txImpairment, j);
5080 getOptional<TransportImpairment>(
"rxImpairment", p.rxImpairment, j);
5081 getOptional<std::vector<uint16_t>>(
"specializerAffinities", p.specializerAffinities, j);
5082 getOptional<uint32_t>(
"securityLevel", p.securityLevel, j, 0);
5083 getOptional<std::vector<Source>>(
"ignoreSources", p.ignoreSources, j);
5084 getOptional<std::string>(
"languageCode", p.languageCode, j);
5085 getOptional<std::string>(
"synVoice", p.synVoice, j);
5087 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
5088 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
5092 getOptional<Group::InboundAliasGenerationPolicy_t>(
"inboundAliasGenerationPolicy", p.inboundAliasGenerationPolicy, j, Group::InboundAliasGenerationPolicy_t::iagpAnonymousAlias);
5094 getOptional<AudioGate>(
"gateIn", p.gateIn, j);
5096 getOptional<bool>(
"ignoreAudioTraffic", p.ignoreAudioTraffic, j,
false);
5098 FROMJSON_BASE_IMPL();
5103 JSON_SERIALIZED_CLASS(Mission)
5106 IMPLEMENT_JSON_SERIALIZATION()
5107 IMPLEMENT_JSON_DOCUMENTATION(
Mission)
5112 std::vector<Group> groups;
5113 std::chrono::system_clock::time_point begins;
5114 std::chrono::system_clock::time_point ends;
5115 std::string certStoreId;
5116 int multicastFailoverPolicy;
5124 certStoreId.clear();
5125 multicastFailoverPolicy = 0;
5130 static void to_json(nlohmann::json& j,
const Mission& p)
5135 TOJSON_IMPL(groups),
5136 TOJSON_IMPL(certStoreId),
5137 TOJSON_IMPL(multicastFailoverPolicy),
5138 TOJSON_IMPL(rallypoint)
5142 static void from_json(
const nlohmann::json& j, Mission& p)
5145 j.at(
"id").get_to(p.id);
5146 j.at(
"name").get_to(p.name);
5151 j.at(
"groups").get_to(p.groups);
5158 FROMJSON_IMPL(certStoreId, std::string, EMPTY_STRING);
5159 FROMJSON_IMPL(multicastFailoverPolicy,
int, 0);
5160 getOptional<Rallypoint>(
"rallypoint", p.rallypoint, j);
5164 JSON_SERIALIZED_CLASS(LicenseDescriptor)
5176 IMPLEMENT_JSON_SERIALIZATION()
5185 static const int STATUS_OK = 0;
5186 static const int ERR_NULL_ENTITLEMENT_KEY = -1;
5187 static const int ERR_NULL_LICENSE_KEY = -2;
5188 static const int ERR_INVALID_LICENSE_KEY_LEN = -3;
5189 static const int ERR_LICENSE_KEY_VERIFICATION_FAILURE = -4;
5190 static const int ERR_ACTIVATION_CODE_VERIFICATION_FAILURE = -5;
5191 static const int ERR_INVALID_EXPIRATION_DATE = -6;
5192 static const int ERR_GENERAL_FAILURE = -7;
5193 static const int ERR_NOT_INITIALIZED = -8;
5194 static const int ERR_REQUIRES_ACTIVATION = -9;
5195 static const int ERR_LICENSE_NOT_SUITED_FOR_ACTIVATION = -10;
5203 static const uint8_t LIC_CARGO_FLAG_LIMIT_TO_FEATURES = 0x01;
5267 entitlement.clear();
5269 activationCode.clear();
5272 expiresFormatted.clear();
5277 status = ERR_NOT_INITIALIZED;
5278 manufacturerId.clear();
5282 static void to_json(nlohmann::json& j,
const LicenseDescriptor& p)
5286 {
"entitlement",
"*entitlement*"},
5288 TOJSON_IMPL(activationCode),
5290 TOJSON_IMPL(expires),
5291 TOJSON_IMPL(expiresFormatted),
5293 TOJSON_IMPL(deviceId),
5294 TOJSON_IMPL(status),
5296 {
"manufacturerId",
"*manufacturerId*"},
5298 TOJSON_IMPL(cargoFlags)
5302 static void from_json(
const nlohmann::json& j, LicenseDescriptor& p)
5305 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
5306 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5307 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
5308 FROMJSON_IMPL(type,
int, 0);
5309 FROMJSON_IMPL(expires, time_t, 0);
5310 FROMJSON_IMPL(expiresFormatted, std::string, EMPTY_STRING);
5311 FROMJSON_IMPL(flags, uint32_t, 0);
5312 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
5313 FROMJSON_IMPL(status,
int, LicenseDescriptor::ERR_NOT_INITIALIZED);
5314 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
5315 FROMJSON_IMPL(cargo, std::string, EMPTY_STRING);
5316 FROMJSON_IMPL(cargoFlags, uint8_t, 0);
5321 JSON_SERIALIZED_CLASS(EngineNetworkingRpUdpStreaming)
5335 IMPLEMENT_JSON_SERIALIZATION()
5363 keepaliveIntervalSecs = 15;
5364 priority = TxPriority_t::priVoice;
5368 virtual void initForDocumenting()
5373 static void to_json(nlohmann::json& j,
const EngineNetworkingRpUdpStreaming& p)
5376 TOJSON_IMPL(enabled),
5378 TOJSON_IMPL(keepaliveIntervalSecs),
5379 TOJSON_IMPL(priority),
5383 static void from_json(
const nlohmann::json& j, EngineNetworkingRpUdpStreaming& p)
5386 getOptional<bool>(
"enabled", p.enabled, j,
false);
5387 getOptional<int>(
"port", p.port, j, 0);
5388 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
5389 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
5390 getOptional<int>(
"ttl", p.ttl, j, 64);
5394 JSON_SERIALIZED_CLASS(EnginePolicyNetworking)
5405 IMPLEMENT_JSON_SERIALIZATION()
5441 multicastRejoinSecs = 8;
5442 rallypointRtTestIntervalMs = 60000;
5443 logRtpJitterBufferStats =
false;
5444 preventMulticastFailover =
false;
5445 addressResolutionPolicy = AddressResolutionPolicy_t::arpIpv6ThenIpv4;
5447 rpUdpStreaming.clear();
5452 static void to_json(nlohmann::json& j,
const EnginePolicyNetworking& p)
5455 TOJSON_IMPL(defaultNic),
5456 TOJSON_IMPL(multicastRejoinSecs),
5458 TOJSON_IMPL(rallypointRtTestIntervalMs),
5459 TOJSON_IMPL(logRtpJitterBufferStats),
5460 TOJSON_IMPL(preventMulticastFailover),
5462 TOJSON_IMPL(rpUdpStreaming),
5463 TOJSON_IMPL(rtpProfile),
5464 TOJSON_IMPL(addressResolutionPolicy)
5467 static void from_json(
const nlohmann::json& j, EnginePolicyNetworking& p)
5470 FROMJSON_IMPL(defaultNic, std::string, EMPTY_STRING);
5471 FROMJSON_IMPL(multicastRejoinSecs,
int, 8);
5472 FROMJSON_IMPL(rallypointRtTestIntervalMs,
int, 60000);
5473 FROMJSON_IMPL(logRtpJitterBufferStats,
bool,
false);
5474 FROMJSON_IMPL(preventMulticastFailover,
bool,
false);
5476 getOptional<EngineNetworkingRpUdpStreaming>(
"rpUdpStreaming", p.rpUdpStreaming, j);
5477 getOptional<RtpProfile>(
"rtpProfile", p.rtpProfile, j);
5478 getOptional<AddressResolutionPolicy_t>(
"addressResolutionPolicy", p.addressResolutionPolicy, j, AddressResolutionPolicy_t::arpIpv6ThenIpv4);
5482 JSON_SERIALIZED_CLASS(Aec)
5494 IMPLEMENT_JSON_SERIALIZATION()
5495 IMPLEMENT_JSON_DOCUMENTATION(
Aec)
5550 static void to_json(nlohmann::json& j,
const Aec& p)
5553 TOJSON_IMPL(enabled),
5555 TOJSON_IMPL(speakerTailMs),
5559 static void from_json(
const nlohmann::json& j, Aec& p)
5562 FROMJSON_IMPL(enabled,
bool,
false);
5563 FROMJSON_IMPL(mode, Aec::Mode_t, Aec::Mode_t::aecmDefault);
5564 FROMJSON_IMPL(speakerTailMs,
int, 60);
5565 FROMJSON_IMPL(cng,
bool,
true);
5569 JSON_SERIALIZED_CLASS(Vad)
5581 IMPLEMENT_JSON_SERIALIZATION()
5582 IMPLEMENT_JSON_DOCUMENTATION(
Vad)
5602 vamVeryAggressive = 3
5623 static void to_json(nlohmann::json& j,
const Vad& p)
5626 TOJSON_IMPL(enabled),
5630 static void from_json(
const nlohmann::json& j, Vad& p)
5633 FROMJSON_IMPL(enabled,
bool,
false);
5634 FROMJSON_IMPL(mode, Vad::Mode_t, Vad::Mode_t::vamDefault);
5638 JSON_SERIALIZED_CLASS(Bridge)
5650 IMPLEMENT_JSON_SERIALIZATION()
5651 IMPLEMENT_JSON_DOCUMENTATION(
Bridge)
5680 static void to_json(nlohmann::json& j,
const Bridge& p)
5685 TOJSON_IMPL(groups),
5686 TOJSON_IMPL(enabled)
5689 static void from_json(
const nlohmann::json& j, Bridge& p)
5692 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
5693 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
5694 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
5695 FROMJSON_IMPL(enabled,
bool,
true);
5699 JSON_SERIALIZED_CLASS(AndroidAudio)
5711 IMPLEMENT_JSON_SERIALIZATION()
5715 constexpr static int INVALID_SESSION_ID = -9999;
5776 performanceMode = 12;
5780 sessionId = AndroidAudio::INVALID_SESSION_ID;
5785 static void to_json(nlohmann::json& j,
const AndroidAudio& p)
5789 TOJSON_IMPL(sharingMode),
5790 TOJSON_IMPL(performanceMode),
5792 TOJSON_IMPL(contentType),
5793 TOJSON_IMPL(inputPreset),
5794 TOJSON_IMPL(sessionId),
5795 TOJSON_IMPL(engineMode)
5798 static void from_json(
const nlohmann::json& j, AndroidAudio& p)
5801 FROMJSON_IMPL(api,
int, 0);
5802 FROMJSON_IMPL(sharingMode,
int, 0);
5803 FROMJSON_IMPL(performanceMode,
int, 12);
5804 FROMJSON_IMPL(usage,
int, 2);
5805 FROMJSON_IMPL(contentType,
int, 1);
5806 FROMJSON_IMPL(inputPreset,
int, 7);
5807 FROMJSON_IMPL(sessionId,
int, AndroidAudio::INVALID_SESSION_ID);
5808 FROMJSON_IMPL(engineMode,
int, 0);
5812 JSON_SERIALIZED_CLASS(EnginePolicyAudio)
5824 IMPLEMENT_JSON_SERIALIZATION()
5879 hardwareEnabled =
true;
5880 internalRate = 16000;
5881 internalChannels = 2;
5888 denoiseInput =
false;
5889 denoiseOutput =
false;
5890 saveInputPcm =
false;
5891 saveOutputPcm =
false;
5895 static void to_json(nlohmann::json& j,
const EnginePolicyAudio& p)
5898 TOJSON_IMPL(enabled),
5899 TOJSON_IMPL(hardwareEnabled),
5900 TOJSON_IMPL(internalRate),
5901 TOJSON_IMPL(internalChannels),
5902 TOJSON_IMPL(muteTxOnTx),
5905 TOJSON_IMPL(android),
5906 TOJSON_IMPL(inputAgc),
5907 TOJSON_IMPL(outputAgc),
5908 TOJSON_IMPL(denoiseInput),
5909 TOJSON_IMPL(denoiseOutput),
5910 TOJSON_IMPL(saveInputPcm),
5911 TOJSON_IMPL(saveOutputPcm)
5914 static void from_json(
const nlohmann::json& j, EnginePolicyAudio& p)
5917 getOptional<bool>(
"enabled", p.enabled, j,
true);
5918 getOptional<bool>(
"hardwareEnabled", p.hardwareEnabled, j,
true);
5919 FROMJSON_IMPL(internalRate,
int, 16000);
5920 FROMJSON_IMPL(internalChannels,
int, 2);
5922 FROMJSON_IMPL(muteTxOnTx,
bool,
false);
5923 getOptional<Aec>(
"aec", p.aec, j);
5924 getOptional<Vad>(
"vad", p.vad, j);
5925 getOptional<AndroidAudio>(
"android", p.android, j);
5926 getOptional<Agc>(
"inputAgc", p.inputAgc, j);
5927 getOptional<Agc>(
"outputAgc", p.outputAgc, j);
5928 FROMJSON_IMPL(denoiseInput,
bool,
false);
5929 FROMJSON_IMPL(denoiseOutput,
bool,
false);
5930 FROMJSON_IMPL(saveInputPcm,
bool,
false);
5931 FROMJSON_IMPL(saveOutputPcm,
bool,
false);
5935 JSON_SERIALIZED_CLASS(SecurityCertificate)
5947 IMPLEMENT_JSON_SERIALIZATION()
5969 certificate.clear();
5974 static void to_json(nlohmann::json& j,
const SecurityCertificate& p)
5977 TOJSON_IMPL(certificate),
5981 static void from_json(
const nlohmann::json& j, SecurityCertificate& p)
5984 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
5985 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
5990 JSON_SERIALIZED_CLASS(EnginePolicySecurity)
6003 IMPLEMENT_JSON_SERIALIZATION()
6036 certificate.clear();
6037 caCertificates.clear();
6041 static void to_json(nlohmann::json& j,
const EnginePolicySecurity& p)
6044 TOJSON_IMPL(certificate),
6045 TOJSON_IMPL(caCertificates)
6048 static void from_json(
const nlohmann::json& j, EnginePolicySecurity& p)
6051 getOptional(
"certificate", p.certificate, j);
6052 getOptional<std::vector<std::string>>(
"caCertificates", p.caCertificates, j);
6056 JSON_SERIALIZED_CLASS(EnginePolicyLogging)
6068 IMPLEMENT_JSON_SERIALIZATION()
6101 enableSyslog =
false;
6105 static void to_json(nlohmann::json& j,
const EnginePolicyLogging& p)
6108 TOJSON_IMPL(maxLevel),
6109 TOJSON_IMPL(enableSyslog)
6112 static void from_json(
const nlohmann::json& j, EnginePolicyLogging& p)
6115 getOptional(
"maxLevel", p.maxLevel, j, 4);
6116 getOptional(
"enableSyslog", p.enableSyslog, j);
6121 JSON_SERIALIZED_CLASS(EnginePolicyDatabase)
6124 IMPLEMENT_JSON_SERIALIZATION()
6135 DatabaseType_t type;
6136 std::string fixedFileName;
6137 bool forceMaintenance;
6147 type = DatabaseType_t::dbtFixedMemory;
6148 fixedFileName.clear();
6149 forceMaintenance =
false;
6150 reclaimSpace =
false;
6158 TOJSON_IMPL(fixedFileName),
6159 TOJSON_IMPL(forceMaintenance),
6160 TOJSON_IMPL(reclaimSpace)
6163 static void from_json(
const nlohmann::json& j, EnginePolicyDatabase& p)
6166 FROMJSON_IMPL(type, EnginePolicyDatabase::DatabaseType_t, EnginePolicyDatabase::DatabaseType_t::dbtFixedMemory);
6167 FROMJSON_IMPL(fixedFileName, std::string, EMPTY_STRING);
6168 FROMJSON_IMPL(forceMaintenance,
bool,
false);
6169 FROMJSON_IMPL(reclaimSpace,
bool,
false);
6174 JSON_SERIALIZED_CLASS(SecureSignature)
6184 IMPLEMENT_JSON_SERIALIZATION()
6205 certificate.clear();
6211 static void to_json(nlohmann::json& j,
const SecureSignature& p)
6214 TOJSON_IMPL(certificate),
6216 TOJSON_IMPL(signature)
6219 static void from_json(
const nlohmann::json& j, SecureSignature& p)
6222 FROMJSON_IMPL(certificate, std::string, EMPTY_STRING);
6224 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
6228 JSON_SERIALIZED_CLASS(NamedAudioDevice)
6231 IMPLEMENT_JSON_SERIALIZATION()
6236 std::string manufacturer;
6239 std::string serialNumber;
6252 manufacturer.clear();
6255 serialNumber.clear();
6266 TOJSON_IMPL(manufacturer),
6269 TOJSON_IMPL(serialNumber),
6272 TOJSON_IMPL(isDefault),
6275 static void from_json(
const nlohmann::json& j, NamedAudioDevice& p)
6278 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
6279 getOptional<std::string>(
"manufacturer", p.manufacturer, j, EMPTY_STRING);
6280 getOptional<std::string>(
"model", p.model, j, EMPTY_STRING);
6281 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
6282 getOptional<std::string>(
"serialNumber", p.serialNumber, j, EMPTY_STRING);
6283 getOptional<std::string>(
"type", p.type, j, EMPTY_STRING);
6284 getOptional<std::string>(
"extra", p.extra, j, EMPTY_STRING);
6285 getOptional<bool>(
"isDefault", p.isDefault, j,
false);
6290 JSON_SERIALIZED_CLASS(EnginePolicyNamedAudioDevices)
6293 IMPLEMENT_JSON_SERIALIZATION()
6297 std::vector<NamedAudioDevice> inputs;
6298 std::vector<NamedAudioDevice> outputs;
6315 TOJSON_IMPL(inputs),
6316 TOJSON_IMPL(outputs)
6319 static void from_json(
const nlohmann::json& j, EnginePolicyNamedAudioDevices& p)
6322 getOptional<std::vector<NamedAudioDevice>>(
"inputs", p.inputs, j);
6323 getOptional<std::vector<NamedAudioDevice>>(
"outputs", p.outputs, j);
6327 JSON_SERIALIZED_CLASS(Licensing)
6341 IMPLEMENT_JSON_SERIALIZATION()
6368 entitlement.clear();
6370 activationCode.clear();
6372 manufacturerId.clear();
6376 static void to_json(nlohmann::json& j,
const Licensing& p)
6379 TOJSON_IMPL(entitlement),
6381 TOJSON_IMPL(activationCode),
6382 TOJSON_IMPL(deviceId),
6383 TOJSON_IMPL(manufacturerId)
6386 static void from_json(
const nlohmann::json& j, Licensing& p)
6389 FROMJSON_IMPL(entitlement, std::string, EMPTY_STRING);
6390 FROMJSON_IMPL(key, std::string, EMPTY_STRING);
6391 FROMJSON_IMPL(activationCode, std::string, EMPTY_STRING);
6392 FROMJSON_IMPL(deviceId, std::string, EMPTY_STRING);
6393 FROMJSON_IMPL(manufacturerId, std::string, EMPTY_STRING);
6397 JSON_SERIALIZED_CLASS(DiscoveryMagellan)
6409 IMPLEMENT_JSON_SERIALIZATION()
6434 interfaceName.clear();
6440 static void to_json(nlohmann::json& j,
const DiscoveryMagellan& p)
6443 TOJSON_IMPL(enabled),
6444 TOJSON_IMPL(interfaceName),
6445 TOJSON_IMPL(security),
6449 static void from_json(
const nlohmann::json& j, DiscoveryMagellan& p)
6452 getOptional(
"enabled", p.enabled, j,
false);
6453 getOptional<Tls>(
"tls", p.tls, j);
6454 getOptional<SecurityCertificate>(
"security", p.security, j);
6455 FROMJSON_IMPL(interfaceName, std::string, EMPTY_STRING);
6459 JSON_SERIALIZED_CLASS(DiscoverySsdp)
6471 IMPLEMENT_JSON_SERIALIZATION()
6502 interfaceName.clear();
6504 searchTerms.clear();
6505 ageTimeoutMs = 30000;
6506 advertising.clear();
6510 static void to_json(nlohmann::json& j,
const DiscoverySsdp& p)
6513 TOJSON_IMPL(enabled),
6514 TOJSON_IMPL(interfaceName),
6515 TOJSON_IMPL(address),
6516 TOJSON_IMPL(searchTerms),
6517 TOJSON_IMPL(ageTimeoutMs),
6518 TOJSON_IMPL(advertising)
6521 static void from_json(
const nlohmann::json& j, DiscoverySsdp& p)
6524 getOptional(
"enabled", p.enabled, j,
false);
6525 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6527 getOptional<NetworkAddress>(
"address", p.address, j);
6528 if(p.address.address.empty())
6530 p.address.address =
"255.255.255.255";
6532 if(p.address.port <= 0)
6534 p.address.port = 1900;
6537 getOptional<std::vector<std::string>>(
"searchTerms", p.searchTerms, j);
6538 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6539 getOptional<Advertising>(
"advertising", p.advertising, j);
6543 JSON_SERIALIZED_CLASS(DiscoverySap)
6555 IMPLEMENT_JSON_SERIALIZATION()
6582 interfaceName.clear();
6584 ageTimeoutMs = 30000;
6585 advertising.clear();
6589 static void to_json(nlohmann::json& j,
const DiscoverySap& p)
6592 TOJSON_IMPL(enabled),
6593 TOJSON_IMPL(interfaceName),
6594 TOJSON_IMPL(address),
6595 TOJSON_IMPL(ageTimeoutMs),
6596 TOJSON_IMPL(advertising)
6599 static void from_json(
const nlohmann::json& j, DiscoverySap& p)
6602 getOptional(
"enabled", p.enabled, j,
false);
6603 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6604 getOptional<NetworkAddress>(
"address", p.address, j);
6605 if(p.address.address.empty())
6607 p.address.address =
"224.2.127.254";
6609 if(p.address.port <= 0)
6611 p.address.port = 9875;
6614 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6615 getOptional<Advertising>(
"advertising", p.advertising, j);
6619 JSON_SERIALIZED_CLASS(DiscoveryCistech)
6633 IMPLEMENT_JSON_SERIALIZATION()
6638 std::string interfaceName;
6650 interfaceName.clear();
6652 ageTimeoutMs = 30000;
6659 TOJSON_IMPL(enabled),
6660 TOJSON_IMPL(interfaceName),
6661 TOJSON_IMPL(address),
6662 TOJSON_IMPL(ageTimeoutMs)
6665 static void from_json(
const nlohmann::json& j, DiscoveryCistech& p)
6668 getOptional(
"enabled", p.enabled, j,
false);
6669 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
6670 getOptional<NetworkAddress>(
"address", p.address, j);
6671 getOptional<int>(
"ageTimeoutMs", p.ageTimeoutMs, j, 30000);
6676 JSON_SERIALIZED_CLASS(DiscoveryTrellisware)
6688 IMPLEMENT_JSON_SERIALIZATION()
6711 static void to_json(nlohmann::json& j,
const DiscoveryTrellisware& p)
6714 TOJSON_IMPL(enabled),
6715 TOJSON_IMPL(security)
6718 static void from_json(
const nlohmann::json& j, DiscoveryTrellisware& p)
6721 getOptional(
"enabled", p.enabled, j,
false);
6722 getOptional<SecurityCertificate>(
"security", p.security, j);
6726 JSON_SERIALIZED_CLASS(DiscoveryConfiguration)
6738 IMPLEMENT_JSON_SERIALIZATION()
6771 static void to_json(nlohmann::json& j,
const DiscoveryConfiguration& p)
6774 TOJSON_IMPL(magellan),
6777 TOJSON_IMPL(cistech),
6778 TOJSON_IMPL(trellisware)
6781 static void from_json(
const nlohmann::json& j, DiscoveryConfiguration& p)
6784 getOptional<DiscoveryMagellan>(
"magellan", p.magellan, j);
6785 getOptional<DiscoverySsdp>(
"ssdp", p.ssdp, j);
6786 getOptional<DiscoverySap>(
"sap", p.sap, j);
6787 getOptional<DiscoveryCistech>(
"cistech", p.cistech, j);
6788 getOptional<DiscoveryTrellisware>(
"trellisware", p.trellisware, j);
6793 JSON_SERIALIZED_CLASS(EnginePolicyInternals)
6807 IMPLEMENT_JSON_SERIALIZATION()
6822 int logTaskQueueStatsIntervalMs;
6824 bool enableLazySpeakerClosure;
6858 housekeeperIntervalMs = 1000;
6859 logTaskQueueStatsIntervalMs = 0;
6862 enableLazySpeakerClosure =
false;
6863 rpClusterStrategy = RallypointCluster::ConnectionStrategy_t::csRoundRobin;
6864 rpClusterRolloverSecs = 10;
6865 rtpExpirationCheckIntervalMs = 250;
6866 rpConnectionTimeoutSecs = 5;
6867 stickyTidHangSecs = 10;
6868 uriStreamingIntervalMs = 60;
6869 delayedMicrophoneClosureSecs = 15;
6874 static void to_json(nlohmann::json& j,
const EnginePolicyInternals& p)
6877 TOJSON_IMPL(watchdog),
6878 TOJSON_IMPL(housekeeperIntervalMs),
6879 TOJSON_IMPL(logTaskQueueStatsIntervalMs),
6880 TOJSON_IMPL(maxTxSecs),
6881 TOJSON_IMPL(maxRxSecs),
6882 TOJSON_IMPL(enableLazySpeakerClosure),
6883 TOJSON_IMPL(rpClusterStrategy),
6884 TOJSON_IMPL(rpClusterRolloverSecs),
6885 TOJSON_IMPL(rtpExpirationCheckIntervalMs),
6886 TOJSON_IMPL(rpConnectionTimeoutSecs),
6887 TOJSON_IMPL(stickyTidHangSecs),
6888 TOJSON_IMPL(uriStreamingIntervalMs),
6889 TOJSON_IMPL(delayedMicrophoneClosureSecs),
6893 static void from_json(
const nlohmann::json& j, EnginePolicyInternals& p)
6896 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
6897 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
6898 getOptional<int>(
"logTaskQueueStatsIntervalMs", p.logTaskQueueStatsIntervalMs, j, 0);
6899 getOptional<int>(
"maxTxSecs", p.maxTxSecs, j, 30);
6900 getOptional<int>(
"maxRxSecs", p.maxRxSecs, j, 0);
6901 getOptional<bool>(
"enableLazySpeakerClosure", p.enableLazySpeakerClosure, j,
false);
6902 getOptional<RallypointCluster::ConnectionStrategy_t>(
"rpClusterStrategy", p.rpClusterStrategy, j, RallypointCluster::ConnectionStrategy_t::csRoundRobin);
6903 getOptional<int>(
"rpClusterRolloverSecs", p.rpClusterRolloverSecs, j, 10);
6904 getOptional<int>(
"rtpExpirationCheckIntervalMs", p.rtpExpirationCheckIntervalMs, j, 250);
6905 getOptional<int>(
"rpConnectionTimeoutSecs", p.rpConnectionTimeoutSecs, j, 5);
6906 getOptional<int>(
"stickyTidHangSecs", p.stickyTidHangSecs, j, 10);
6907 getOptional<int>(
"uriStreamingIntervalMs", p.uriStreamingIntervalMs, j, 60);
6908 getOptional<int>(
"delayedMicrophoneClosureSecs", p.delayedMicrophoneClosureSecs, j, 15);
6909 getOptional<TuningSettings>(
"tuning", p.tuning, j);
6913 JSON_SERIALIZED_CLASS(EnginePolicyTimelines)
6927 IMPLEMENT_JSON_SERIALIZATION()
6989 storageRoot.clear();
6990 maxStorageMb = 1024;
6991 maxMemMb = maxStorageMb;
6992 maxAudioEventMemMb = maxMemMb;
6993 maxDiskMb = maxStorageMb;
6994 maxEventAgeSecs = (86400 * 30);
6995 groomingIntervalSecs = (60 * 30);
6997 autosaveIntervalSecs = 5;
6999 disableSigningAndVerification =
false;
7004 static void to_json(nlohmann::json& j,
const EnginePolicyTimelines& p)
7007 TOJSON_IMPL(enabled),
7008 TOJSON_IMPL(storageRoot),
7009 TOJSON_IMPL(maxMemMb),
7010 TOJSON_IMPL(maxAudioEventMemMb),
7011 TOJSON_IMPL(maxDiskMb),
7012 TOJSON_IMPL(maxEventAgeSecs),
7013 TOJSON_IMPL(maxEvents),
7014 TOJSON_IMPL(groomingIntervalSecs),
7015 TOJSON_IMPL(autosaveIntervalSecs),
7016 TOJSON_IMPL(security),
7017 TOJSON_IMPL(disableSigningAndVerification),
7018 TOJSON_IMPL(ephemeral)
7021 static void from_json(
const nlohmann::json& j, EnginePolicyTimelines& p)
7024 getOptional<bool>(
"enabled", p.enabled, j,
true);
7025 getOptional<std::string>(
"storageRoot", p.storageRoot, j, EMPTY_STRING);
7027 getOptional<int>(
"maxStorageMb", p.maxStorageMb, j, 1024);
7028 getOptional<int>(
"maxMemMb", p.maxMemMb, j, p.maxStorageMb);
7029 getOptional<int>(
"maxAudioEventMemMb", p.maxAudioEventMemMb, j, p.maxMemMb);
7030 getOptional<int>(
"maxDiskMb", p.maxDiskMb, j, p.maxStorageMb);
7031 getOptional<long>(
"maxEventAgeSecs", p.maxEventAgeSecs, j, (86400 * 30));
7032 getOptional<long>(
"groomingIntervalSecs", p.groomingIntervalSecs, j, (60 * 30));
7033 getOptional<long>(
"autosaveIntervalSecs", p.autosaveIntervalSecs, j, 5);
7034 getOptional<int>(
"maxEvents", p.maxEvents, j, 1000);
7035 getOptional<SecurityCertificate>(
"security", p.security, j);
7036 getOptional<bool>(
"disableSigningAndVerification", p.disableSigningAndVerification, j,
false);
7037 getOptional<bool>(
"ephemeral", p.ephemeral, j,
false);
7042 JSON_SERIALIZED_CLASS(RtpMapEntry)
7054 IMPLEMENT_JSON_SERIALIZATION()
7076 rtpPayloadType = -1;
7080 static void to_json(nlohmann::json& j,
const RtpMapEntry& p)
7084 TOJSON_IMPL(engageType),
7085 TOJSON_IMPL(rtpPayloadType)
7088 static void from_json(
const nlohmann::json& j, RtpMapEntry& p)
7091 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7092 getOptional<int>(
"engageType", p.engageType, j, -1);
7093 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7097 JSON_SERIALIZED_CLASS(ExternalModule)
7109 IMPLEMENT_JSON_SERIALIZATION()
7131 configuration.clear();
7135 static void to_json(nlohmann::json& j,
const ExternalModule& p)
7142 if(!p.configuration.empty())
7144 j[
"configuration"] = p.configuration;
7147 static void from_json(
const nlohmann::json& j, ExternalModule& p)
7150 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
7151 getOptional<std::string>(
"file", p.file, j, EMPTY_STRING);
7155 p.configuration = j.at(
"configuration");
7159 p.configuration.clear();
7165 JSON_SERIALIZED_CLASS(ExternalCodecDescriptor)
7177 IMPLEMENT_JSON_SERIALIZATION()
7200 rtpPayloadType = -1;
7203 rtpTsMultiplier = 0;
7207 static void to_json(nlohmann::json& j,
const ExternalCodecDescriptor& p)
7210 TOJSON_IMPL(rtpPayloadType),
7211 TOJSON_IMPL(samplingRate),
7212 TOJSON_IMPL(channels),
7213 TOJSON_IMPL(rtpTsMultiplier)
7216 static void from_json(
const nlohmann::json& j, ExternalCodecDescriptor& p)
7220 getOptional<int>(
"rtpPayloadType", p.rtpPayloadType, j, -1);
7221 getOptional<int>(
"samplingRate", p.samplingRate, j, -1);
7222 getOptional<int>(
"channels", p.channels, j, -1);
7223 getOptional<int>(
"rtpTsMultiplier", p.rtpTsMultiplier, j, -1);
7227 JSON_SERIALIZED_CLASS(EngineStatusReportConfiguration)
7239 IMPLEMENT_JSON_SERIALIZATION()
7271 includeMemoryDetail =
false;
7272 includeTaskQueueDetail =
false;
7277 static void to_json(nlohmann::json& j,
const EngineStatusReportConfiguration& p)
7280 TOJSON_IMPL(fileName),
7281 TOJSON_IMPL(intervalSecs),
7282 TOJSON_IMPL(enabled),
7283 TOJSON_IMPL(includeMemoryDetail),
7284 TOJSON_IMPL(includeTaskQueueDetail),
7288 static void from_json(
const nlohmann::json& j, EngineStatusReportConfiguration& p)
7291 getOptional<std::string>(
"fileName", p.fileName, j);
7292 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
7293 getOptional<bool>(
"enabled", p.enabled, j,
false);
7294 getOptional<std::string>(
"runCmd", p.runCmd, j);
7295 getOptional<bool>(
"includeMemoryDetail", p.includeMemoryDetail, j,
false);
7296 getOptional<bool>(
"includeTaskQueueDetail", p.includeTaskQueueDetail, j,
false);
7300 JSON_SERIALIZED_CLASS(EnginePolicy)
7314 IMPLEMENT_JSON_SERIALIZATION()
7371 dataDirectory.clear();
7382 namedAudioDevices.clear();
7383 externalCodecs.clear();
7385 statusReport.clear();
7389 static void to_json(nlohmann::json& j,
const EnginePolicy& p)
7392 TOJSON_IMPL(dataDirectory),
7393 TOJSON_IMPL(licensing),
7394 TOJSON_IMPL(security),
7395 TOJSON_IMPL(networking),
7397 TOJSON_IMPL(discovery),
7398 TOJSON_IMPL(logging),
7399 TOJSON_IMPL(internals),
7400 TOJSON_IMPL(timelines),
7401 TOJSON_IMPL(database),
7402 TOJSON_IMPL(featureset),
7403 TOJSON_IMPL(namedAudioDevices),
7404 TOJSON_IMPL(externalCodecs),
7405 TOJSON_IMPL(rtpMap),
7406 TOJSON_IMPL(statusReport)
7409 static void from_json(
const nlohmann::json& j, EnginePolicy& p)
7412 FROMJSON_IMPL_SIMPLE(dataDirectory);
7413 FROMJSON_IMPL_SIMPLE(licensing);
7414 FROMJSON_IMPL_SIMPLE(security);
7415 FROMJSON_IMPL_SIMPLE(networking);
7416 FROMJSON_IMPL_SIMPLE(audio);
7417 FROMJSON_IMPL_SIMPLE(discovery);
7418 FROMJSON_IMPL_SIMPLE(logging);
7419 FROMJSON_IMPL_SIMPLE(internals);
7420 FROMJSON_IMPL_SIMPLE(timelines);
7421 FROMJSON_IMPL_SIMPLE(database);
7422 FROMJSON_IMPL_SIMPLE(featureset);
7423 FROMJSON_IMPL_SIMPLE(namedAudioDevices);
7424 FROMJSON_IMPL_SIMPLE(externalCodecs);
7425 FROMJSON_IMPL_SIMPLE(rtpMap);
7426 FROMJSON_IMPL_SIMPLE(statusReport);
7431 JSON_SERIALIZED_CLASS(TalkgroupAsset)
7443 IMPLEMENT_JSON_SERIALIZATION()
7466 static void to_json(nlohmann::json& j,
const TalkgroupAsset& p)
7469 TOJSON_IMPL(nodeId),
7473 static void from_json(
const nlohmann::json& j, TalkgroupAsset& p)
7476 getOptional<std::string>(
"nodeId", p.nodeId, j);
7477 getOptional<Group>(
"group", p.group, j);
7481 JSON_SERIALIZED_CLASS(EngageDiscoveredGroup)
7491 IMPLEMENT_JSON_SERIALIZATION()
7521 static void to_json(nlohmann::json& j,
const EngageDiscoveredGroup& p)
7530 static void from_json(
const nlohmann::json& j, EngageDiscoveredGroup& p)
7533 getOptional<std::string>(
"id", p.id, j);
7534 getOptional<int>(
"type", p.type, j, 0);
7535 getOptional<NetworkAddress>(
"rx", p.rx, j);
7536 getOptional<NetworkAddress>(
"tx", p.tx, j);
7540 JSON_SERIALIZED_CLASS(RallypointPeer)
7552 IMPLEMENT_JSON_SERIALIZATION()
7584 certificate.clear();
7585 connectionTimeoutSecs = 0;
7586 forceIsMeshLeaf =
false;
7590 static void to_json(nlohmann::json& j,
const RallypointPeer& p)
7594 TOJSON_IMPL(enabled),
7596 TOJSON_IMPL(certificate),
7597 TOJSON_IMPL(connectionTimeoutSecs),
7598 TOJSON_IMPL(forceIsMeshLeaf)
7601 static void from_json(
const nlohmann::json& j, RallypointPeer& p)
7604 j.at(
"id").get_to(p.id);
7605 getOptional<bool>(
"enabled", p.enabled, j,
true);
7606 getOptional<NetworkAddress>(
"host", p.host, j);
7607 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
7608 getOptional<int>(
"connectionTimeoutSecs", p.connectionTimeoutSecs, j, 0);
7609 getOptional<bool>(
"forceIsMeshLeaf", p.forceIsMeshLeaf, j,
false);
7613 JSON_SERIALIZED_CLASS(RallypointServerLimits)
7625 IMPLEMENT_JSON_SERIALIZATION()
7683 maxMulticastReflectors = 0;
7684 maxRegisteredStreams = 0;
7686 maxRxPacketsPerSec = 0;
7687 maxTxPacketsPerSec = 0;
7688 maxRxBytesPerSec = 0;
7689 maxTxBytesPerSec = 0;
7691 maxInboundBacklog = 64;
7692 lowPriorityQueueThreshold = 64;
7693 normalPriorityQueueThreshold = 256;
7694 denyNewConnectionCpuThreshold = 75;
7695 warnAtCpuThreshold = 65;
7699 static void to_json(nlohmann::json& j,
const RallypointServerLimits& p)
7702 TOJSON_IMPL(maxClients),
7703 TOJSON_IMPL(maxPeers),
7704 TOJSON_IMPL(maxMulticastReflectors),
7705 TOJSON_IMPL(maxRegisteredStreams),
7706 TOJSON_IMPL(maxStreamPaths),
7707 TOJSON_IMPL(maxRxPacketsPerSec),
7708 TOJSON_IMPL(maxTxPacketsPerSec),
7709 TOJSON_IMPL(maxRxBytesPerSec),
7710 TOJSON_IMPL(maxTxBytesPerSec),
7711 TOJSON_IMPL(maxQOpsPerSec),
7712 TOJSON_IMPL(maxInboundBacklog),
7713 TOJSON_IMPL(lowPriorityQueueThreshold),
7714 TOJSON_IMPL(normalPriorityQueueThreshold),
7715 TOJSON_IMPL(denyNewConnectionCpuThreshold),
7716 TOJSON_IMPL(warnAtCpuThreshold)
7719 static void from_json(
const nlohmann::json& j, RallypointServerLimits& p)
7722 getOptional<uint32_t>(
"maxClients", p.maxClients, j, 0);
7723 getOptional<uint32_t>(
"maxPeers", p.maxPeers, j, 0);
7724 getOptional<uint32_t>(
"maxMulticastReflectors", p.maxMulticastReflectors, j, 0);
7725 getOptional<uint32_t>(
"maxRegisteredStreams", p.maxRegisteredStreams, j, 0);
7726 getOptional<uint32_t>(
"maxStreamPaths", p.maxStreamPaths, j, 0);
7727 getOptional<uint32_t>(
"maxRxPacketsPerSec", p.maxRxPacketsPerSec, j, 0);
7728 getOptional<uint32_t>(
"maxTxPacketsPerSec", p.maxTxPacketsPerSec, j, 0);
7729 getOptional<uint32_t>(
"maxRxBytesPerSec", p.maxRxBytesPerSec, j, 0);
7730 getOptional<uint32_t>(
"maxTxBytesPerSec", p.maxTxBytesPerSec, j, 0);
7731 getOptional<uint32_t>(
"maxQOpsPerSec", p.maxQOpsPerSec, j, 0);
7732 getOptional<uint32_t>(
"maxInboundBacklog", p.maxInboundBacklog, j, 64);
7733 getOptional<uint32_t>(
"lowPriorityQueueThreshold", p.lowPriorityQueueThreshold, j, 64);
7734 getOptional<uint32_t>(
"normalPriorityQueueThreshold", p.normalPriorityQueueThreshold, j, 256);
7735 getOptional<uint32_t>(
"denyNewConnectionCpuThreshold", p.denyNewConnectionCpuThreshold, j, 75);
7736 getOptional<uint32_t>(
"warnAtCpuThreshold", p.warnAtCpuThreshold, j, 65);
7740 JSON_SERIALIZED_CLASS(RallypointServerStatusReportConfiguration)
7752 IMPLEMENT_JSON_SERIALIZATION()
7787 includeLinks =
false;
7788 includePeerLinkDetails =
false;
7789 includeClientLinkDetails =
false;
7794 static void to_json(nlohmann::json& j,
const RallypointServerStatusReportConfiguration& p)
7797 TOJSON_IMPL(fileName),
7798 TOJSON_IMPL(intervalSecs),
7799 TOJSON_IMPL(enabled),
7800 TOJSON_IMPL(includeLinks),
7801 TOJSON_IMPL(includePeerLinkDetails),
7802 TOJSON_IMPL(includeClientLinkDetails),
7806 static void from_json(
const nlohmann::json& j, RallypointServerStatusReportConfiguration& p)
7809 getOptional<std::string>(
"fileName", p.fileName, j);
7810 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
7811 getOptional<bool>(
"enabled", p.enabled, j,
false);
7812 getOptional<bool>(
"includeLinks", p.includeLinks, j,
false);
7813 getOptional<bool>(
"includePeerLinkDetails", p.includePeerLinkDetails, j,
false);
7814 getOptional<bool>(
"includeClientLinkDetails", p.includeClientLinkDetails, j,
false);
7815 getOptional<std::string>(
"runCmd", p.runCmd, j);
7819 JSON_SERIALIZED_CLASS(RallypointServerLinkGraph)
7822 IMPLEMENT_JSON_SERIALIZATION()
7865 includeDigraphEnclosure =
true;
7866 includeClients =
false;
7867 coreRpStyling =
"[shape=hexagon color=firebrick style=filled]";
7868 leafRpStyling =
"[shape=box color=gray style=filled]";
7869 clientStyling.clear();
7874 static void to_json(nlohmann::json& j,
const RallypointServerLinkGraph& p)
7877 TOJSON_IMPL(fileName),
7878 TOJSON_IMPL(minRefreshSecs),
7879 TOJSON_IMPL(enabled),
7880 TOJSON_IMPL(includeDigraphEnclosure),
7881 TOJSON_IMPL(includeClients),
7882 TOJSON_IMPL(coreRpStyling),
7883 TOJSON_IMPL(leafRpStyling),
7884 TOJSON_IMPL(clientStyling),
7888 static void from_json(
const nlohmann::json& j, RallypointServerLinkGraph& p)
7891 getOptional<std::string>(
"fileName", p.fileName, j);
7892 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
7893 getOptional<bool>(
"enabled", p.enabled, j,
false);
7894 getOptional<bool>(
"includeDigraphEnclosure", p.includeDigraphEnclosure, j,
true);
7895 getOptional<bool>(
"includeClients", p.includeClients, j,
false);
7896 getOptional<std::string>(
"coreRpStyling", p.coreRpStyling, j,
"[shape=hexagon color=firebrick style=filled]");
7897 getOptional<std::string>(
"leafRpStyling", p.leafRpStyling, j,
"[shape=box color=gray style=filled]");
7898 getOptional<std::string>(
"clientStyling", p.clientStyling, j);
7899 getOptional<std::string>(
"runCmd", p.runCmd, j);
7904 JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
7907 IMPLEMENT_JSON_SERIALIZATION()
7936 static void to_json(nlohmann::json& j,
const RallypointServerRouteMap& p)
7939 TOJSON_IMPL(fileName),
7940 TOJSON_IMPL(minRefreshSecs),
7941 TOJSON_IMPL(enabled),
7945 static void from_json(
const nlohmann::json& j, RallypointServerRouteMap& p)
7948 getOptional<std::string>(
"fileName", p.fileName, j);
7949 getOptional<int>(
"minRefreshSecs", p.minRefreshSecs, j, 5);
7950 getOptional<bool>(
"enabled", p.enabled, j,
false);
7951 getOptional<std::string>(
"runCmd", p.runCmd, j);
7956 JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
7968 IMPLEMENT_JSON_SERIALIZATION()
7987 immediateClose =
true;
7991 static void to_json(nlohmann::json& j,
const ExternalHealthCheckResponder& p)
7994 TOJSON_IMPL(listenPort),
7995 TOJSON_IMPL(immediateClose)
7998 static void from_json(
const nlohmann::json& j, ExternalHealthCheckResponder& p)
8001 getOptional<int>(
"listenPort", p.listenPort, j, 0);
8002 getOptional<bool>(
"immediateClose", p.immediateClose, j,
true);
8007 JSON_SERIALIZED_CLASS(PeeringConfiguration)
8017 IMPLEMENT_JSON_SERIALIZATION()
8047 static void to_json(nlohmann::json& j,
const PeeringConfiguration& p)
8051 TOJSON_IMPL(version),
8052 TOJSON_IMPL(comments),
8056 static void from_json(
const nlohmann::json& j, PeeringConfiguration& p)
8059 getOptional<std::string>(
"id", p.id, j);
8060 getOptional<int>(
"version", p.version, j, 0);
8061 getOptional<std::string>(
"comments", p.comments, j);
8062 getOptional<std::vector<RallypointPeer>>(
"peers", p.peers, j);
8066 JSON_SERIALIZED_CLASS(IgmpSnooping)
8076 IMPLEMENT_JSON_SERIALIZATION()
8101 queryIntervalMs = 60000;
8102 lastMemberQueryIntervalMs = 1000;
8103 lastMemberQueryCount = 1;
8107 static void to_json(nlohmann::json& j,
const IgmpSnooping& p)
8110 TOJSON_IMPL(enabled),
8111 TOJSON_IMPL(queryIntervalMs),
8112 TOJSON_IMPL(lastMemberQueryIntervalMs),
8113 TOJSON_IMPL(lastMemberQueryCount)
8116 static void from_json(
const nlohmann::json& j, IgmpSnooping& p)
8119 getOptional<bool>(
"enabled", p.enabled, j);
8120 getOptional<int>(
"queryIntervalMs", p.queryIntervalMs, j, 60000);
8121 getOptional<int>(
"lastMemberQueryIntervalMs", p.lastMemberQueryIntervalMs, j, 1000);
8122 getOptional<int>(
"lastMemberQueryCount", p.lastMemberQueryCount, j, 1);
8127 JSON_SERIALIZED_CLASS(RallypointReflector)
8136 IMPLEMENT_JSON_SERIALIZATION()
8151 } DirectionRestriction_t;
8183 multicastInterfaceName.clear();
8184 additionalTx.clear();
8185 directionRestriction = drNone;
8189 static void to_json(nlohmann::json& j,
const RallypointReflector& p)
8195 TOJSON_IMPL(multicastInterfaceName),
8196 TOJSON_IMPL(additionalTx),
8197 TOJSON_IMPL(directionRestriction)
8200 static void from_json(
const nlohmann::json& j, RallypointReflector& p)
8203 j.at(
"id").get_to(p.id);
8204 j.at(
"rx").get_to(p.rx);
8205 j.at(
"tx").get_to(p.tx);
8206 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
8207 getOptional<std::vector<NetworkAddress>>(
"additionalTx", p.additionalTx, j);
8208 getOptional<RallypointReflector::DirectionRestriction_t>(
"directionRestriction", p.directionRestriction, j, RallypointReflector::DirectionRestriction_t::drNone);
8213 JSON_SERIALIZED_CLASS(RallypointUdpStreamingIpvX)
8222 IMPLEMENT_JSON_SERIALIZATION()
8244 static void to_json(nlohmann::json& j,
const RallypointUdpStreamingIpvX& p)
8247 TOJSON_IMPL(enabled),
8248 TOJSON_IMPL(external)
8251 static void from_json(
const nlohmann::json& j, RallypointUdpStreamingIpvX& p)
8254 getOptional<bool>(
"enabled", p.enabled, j,
true);
8255 getOptional<NetworkAddress>(
"external", p.external, j);
8259 JSON_SERIALIZED_CLASS(RallypointUdpStreaming)
8268 IMPLEMENT_JSON_SERIALIZATION()
8279 ctSharedKeyAes256FullIv = 1,
8282 ctSharedKeyAes256IdxIv = 2,
8285 ctSharedKeyChaCha20FullIv = 3,
8288 ctSharedKeyChaCha20IdxIv = 4
8324 cryptoType = CryptoType_t::ctSharedKeyAes256FullIv;
8328 keepaliveIntervalSecs = 15;
8329 priority = TxPriority_t::priVoice;
8334 static void to_json(nlohmann::json& j,
const RallypointUdpStreaming& p)
8337 TOJSON_IMPL(enabled),
8338 TOJSON_IMPL(cryptoType),
8339 TOJSON_IMPL(listenPort),
8340 TOJSON_IMPL(keepaliveIntervalSecs),
8343 TOJSON_IMPL(priority),
8347 static void from_json(
const nlohmann::json& j, RallypointUdpStreaming& p)
8350 getOptional<bool>(
"enabled", p.enabled, j,
true);
8351 getOptional<RallypointUdpStreaming::CryptoType_t>(
"cryptoType", p.cryptoType, j, RallypointUdpStreaming::CryptoType_t::ctSharedKeyAes256FullIv);
8352 getOptional<int>(
"listenPort", p.listenPort, j, 7444);
8353 getOptional<int>(
"keepaliveIntervalSecs", p.keepaliveIntervalSecs, j, 15);
8354 getOptional<RallypointUdpStreamingIpvX>(
"ipv4", p.ipv4, j);
8355 getOptional<RallypointUdpStreamingIpvX>(
"ipv6", p.ipv6, j);
8356 getOptional<TxPriority_t>(
"priority", p.priority, j, TxPriority_t::priVoice);
8357 getOptional<int>(
"ttl", p.ttl, j, 64);
8361 JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
8370 IMPLEMENT_JSON_SERIALIZATION()
8415 static void to_json(nlohmann::json& j,
const RallypointRpRtTimingBehavior& p)
8418 TOJSON_IMPL(behavior),
8419 TOJSON_IMPL(atOrAboveMs),
8423 static void from_json(
const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
8426 getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>(
"behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
8427 getOptional<uint32_t>(
"atOrAboveMs", p.atOrAboveMs, j, 0);
8428 getOptional<std::string>(
"runCmd", p.runCmd, j);
8433 JSON_SERIALIZED_CLASS(RallypointWebsocketSettings)
8442 IMPLEMENT_JSON_SERIALIZATION()
8464 certificate.clear();
8468 static void to_json(nlohmann::json& j,
const RallypointWebsocketSettings& p)
8471 TOJSON_IMPL(enabled),
8472 TOJSON_IMPL(listenPort),
8473 TOJSON_IMPL(certificate)
8476 static void from_json(
const nlohmann::json& j, RallypointWebsocketSettings& p)
8479 getOptional<bool>(
"enabled", p.enabled, j,
false);
8480 getOptional<int>(
"listenPort", p.listenPort, j, 8443);
8481 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8487 JSON_SERIALIZED_CLASS(RallypointAdvertisingSettings)
8496 IMPLEMENT_JSON_SERIALIZATION()
8527 serviceName =
"_rallypoint._tcp.local.";
8528 interfaceName.clear();
8534 static void to_json(nlohmann::json& j,
const RallypointAdvertisingSettings& p)
8537 TOJSON_IMPL(enabled),
8538 TOJSON_IMPL(hostName),
8539 TOJSON_IMPL(serviceName),
8540 TOJSON_IMPL(interfaceName),
8545 static void from_json(
const nlohmann::json& j, RallypointAdvertisingSettings& p)
8548 getOptional<bool>(
"enabled", p.enabled, j,
false);
8549 getOptional<std::string>(
"hostName", p.hostName, j);
8550 getOptional<std::string>(
"serviceName", p.serviceName, j,
"_rallypoint._tcp.local.");
8551 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
8553 getOptional<int>(
"port", p.port, j, 0);
8554 getOptional<int>(
"ttl", p.ttl, j, 60);
8559 JSON_SERIALIZED_CLASS(RallypointExtendedGroupRestriction)
8568 IMPLEMENT_JSON_SERIALIZATION()
8586 restrictions.clear();
8590 static void to_json(nlohmann::json& j,
const RallypointExtendedGroupRestriction& p)
8594 TOJSON_IMPL(restrictions)
8597 static void from_json(
const nlohmann::json& j, RallypointExtendedGroupRestriction& p)
8600 getOptional<std::string>(
"id", p.id, j);
8601 getOptional<std::vector<StringRestrictionList>>(
"restrictions", p.restrictions, j);
8606 JSON_SERIALIZED_CLASS(RallypointServer)
8617 IMPLEMENT_JSON_SERIALIZATION()
8800 interfaceName.clear();
8801 certificate.clear();
8802 allowMulticastForwarding =
false;
8803 peeringConfiguration.clear();
8804 peeringConfigurationFileName.clear();
8805 peeringConfigurationFileCommand.clear();
8806 peeringConfigurationFileCheckSecs = 60;
8808 statusReport.clear();
8811 externalHealthCheckResponder.clear();
8812 allowPeerForwarding =
false;
8813 multicastInterfaceName.clear();
8816 forwardDiscoveredGroups =
false;
8817 forwardMulticastAddressing =
false;
8819 disableMessageSigning =
false;
8820 multicastRestrictions.clear();
8821 igmpSnooping.clear();
8822 staticReflectors.clear();
8823 tcpTxOptions.clear();
8824 multicastTxOptions.clear();
8825 certStoreFileName.clear();
8826 certStorePasswordHex.clear();
8827 groupRestrictions.clear();
8828 configurationCheckSignalName =
"rts.7b392d1.${id}";
8831 udpStreaming.clear();
8833 normalTaskQueueBias = 0;
8834 enableLeafReflectionReverseSubscription =
false;
8835 disableLoopDetection =
false;
8836 maxSecurityLevel = 0;
8838 maxOutboundPeerConnectionIntervalDeltaSecs = 15;
8839 peerRtTestIntervalMs = 60000;
8840 peerRtBehaviors.clear();
8843 advertising.clear();
8844 extendedGroupRestrictions.clear();
8845 groupRestrictionAccessPolicyType = GroupRestrictionAccessPolicyType_t::graptPermissive;
8846 ipFamily = IpFamilyType_t::ifIpUnspec;
8850 extraMeshes.clear();
8855 static void to_json(nlohmann::json& j,
const RallypointServer& p)
8858 TOJSON_IMPL(fipsCrypto),
8859 TOJSON_IMPL(watchdog),
8861 TOJSON_IMPL(listenPort),
8862 TOJSON_IMPL(interfaceName),
8863 TOJSON_IMPL(certificate),
8864 TOJSON_IMPL(allowMulticastForwarding),
8866 TOJSON_IMPL(peeringConfigurationFileName),
8867 TOJSON_IMPL(peeringConfigurationFileCommand),
8868 TOJSON_IMPL(peeringConfigurationFileCheckSecs),
8869 TOJSON_IMPL(ioPools),
8870 TOJSON_IMPL(statusReport),
8871 TOJSON_IMPL(limits),
8872 TOJSON_IMPL(linkGraph),
8873 TOJSON_IMPL(externalHealthCheckResponder),
8874 TOJSON_IMPL(allowPeerForwarding),
8875 TOJSON_IMPL(multicastInterfaceName),
8877 TOJSON_IMPL(discovery),
8878 TOJSON_IMPL(forwardDiscoveredGroups),
8879 TOJSON_IMPL(forwardMulticastAddressing),
8880 TOJSON_IMPL(isMeshLeaf),
8881 TOJSON_IMPL(disableMessageSigning),
8882 TOJSON_IMPL(multicastRestrictions),
8883 TOJSON_IMPL(igmpSnooping),
8884 TOJSON_IMPL(staticReflectors),
8885 TOJSON_IMPL(tcpTxOptions),
8886 TOJSON_IMPL(multicastTxOptions),
8887 TOJSON_IMPL(certStoreFileName),
8888 TOJSON_IMPL(certStorePasswordHex),
8889 TOJSON_IMPL(groupRestrictions),
8890 TOJSON_IMPL(configurationCheckSignalName),
8891 TOJSON_IMPL(featureset),
8892 TOJSON_IMPL(licensing),
8893 TOJSON_IMPL(udpStreaming),
8894 TOJSON_IMPL(sysFlags),
8895 TOJSON_IMPL(normalTaskQueueBias),
8896 TOJSON_IMPL(enableLeafReflectionReverseSubscription),
8897 TOJSON_IMPL(disableLoopDetection),
8898 TOJSON_IMPL(maxSecurityLevel),
8899 TOJSON_IMPL(routeMap),
8900 TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
8901 TOJSON_IMPL(peerRtTestIntervalMs),
8902 TOJSON_IMPL(peerRtBehaviors),
8903 TOJSON_IMPL(websocket),
8905 TOJSON_IMPL(advertising),
8906 TOJSON_IMPL(extendedGroupRestrictions),
8907 TOJSON_IMPL(groupRestrictionAccessPolicyType),
8908 TOJSON_IMPL(ipFamily),
8909 TOJSON_IMPL(rxCapture),
8910 TOJSON_IMPL(txCapture),
8911 TOJSON_IMPL(meshName),
8912 TOJSON_IMPL(extraMeshes),
8916 static void from_json(
const nlohmann::json& j, RallypointServer& p)
8919 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
8920 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
8921 getOptional<std::string>(
"id", p.id, j);
8922 getOptional<SecurityCertificate>(
"certificate", p.certificate, j);
8923 getOptional<std::string>(
"interfaceName", p.interfaceName, j);
8924 getOptional<int>(
"listenPort", p.listenPort, j, 7443);
8925 getOptional<bool>(
"allowMulticastForwarding", p.allowMulticastForwarding, j,
false);
8927 getOptional<std::string>(
"peeringConfigurationFileName", p.peeringConfigurationFileName, j);
8928 getOptional<std::string>(
"peeringConfigurationFileCommand", p.peeringConfigurationFileCommand, j);
8929 getOptional<int>(
"peeringConfigurationFileCheckSecs", p.peeringConfigurationFileCheckSecs, j, 60);
8930 getOptional<int>(
"ioPools", p.ioPools, j, -1);
8931 getOptional<RallypointServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
8932 getOptional<RallypointServerLimits>(
"limits", p.limits, j);
8933 getOptional<RallypointServerLinkGraph>(
"linkGraph", p.linkGraph, j);
8934 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
8935 getOptional<bool>(
"allowPeerForwarding", p.allowPeerForwarding, j,
false);
8936 getOptional<std::string>(
"multicastInterfaceName", p.multicastInterfaceName, j);
8937 getOptional<Tls>(
"tls", p.tls, j);
8938 getOptional<DiscoveryConfiguration>(
"discovery", p.discovery, j);
8939 getOptional<bool>(
"forwardDiscoveredGroups", p.forwardDiscoveredGroups, j,
false);
8940 getOptional<bool>(
"forwardMulticastAddressing", p.forwardMulticastAddressing, j,
false);
8941 getOptional<bool>(
"isMeshLeaf", p.isMeshLeaf, j,
false);
8942 getOptional<bool>(
"disableMessageSigning", p.disableMessageSigning, j,
false);
8943 getOptional<NetworkAddressRestrictionList>(
"multicastRestrictions", p.multicastRestrictions, j);
8944 getOptional<IgmpSnooping>(
"igmpSnooping", p.igmpSnooping, j);
8945 getOptional<std::vector<RallypointReflector>>(
"staticReflectors", p.staticReflectors, j);
8946 getOptional<TcpNetworkTxOptions>(
"tcpTxOptions", p.tcpTxOptions, j);
8947 getOptional<NetworkTxOptions>(
"multicastTxOptions", p.multicastTxOptions, j);
8948 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
8949 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
8950 getOptional<StringRestrictionList>(
"groupRestrictions", p.groupRestrictions, j);
8951 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.7b392d1.${id}");
8952 getOptional<Licensing>(
"licensing", p.licensing, j);
8953 getOptional<Featureset>(
"featureset", p.featureset, j);
8954 getOptional<RallypointUdpStreaming>(
"udpStreaming", p.udpStreaming, j);
8955 getOptional<uint32_t>(
"sysFlags", p.sysFlags, j, 0);
8956 getOptional<uint32_t>(
"normalTaskQueueBias", p.normalTaskQueueBias, j, 0);
8957 getOptional<bool>(
"enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j,
false);
8958 getOptional<bool>(
"disableLoopDetection", p.disableLoopDetection, j,
false);
8959 getOptional<uint32_t>(
"maxSecurityLevel", p.maxSecurityLevel, j, 0);
8960 getOptional<RallypointServerRouteMap>(
"routeMap", p.routeMap, j);
8961 getOptional<uint32_t>(
"maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
8962 getOptional<int>(
"peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
8963 getOptional<std::vector<RallypointRpRtTimingBehavior>>(
"peerRtBehaviors", p.peerRtBehaviors, j);
8964 getOptional<RallypointWebsocketSettings>(
"websocket", p.websocket, j);
8965 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
8966 getOptional<RallypointAdvertisingSettings>(
"advertising", p.advertising, j);
8967 getOptional<std::vector<RallypointExtendedGroupRestriction>>(
"extendedGroupRestrictions", p.extendedGroupRestrictions, j);
8968 getOptional<GroupRestrictionAccessPolicyType_t>(
"groupRestrictionAccessPolicyType", p.groupRestrictionAccessPolicyType, j, GroupRestrictionAccessPolicyType_t::graptPermissive);
8969 getOptional<IpFamilyType_t>(
"ipFamily", p.ipFamily, j, IpFamilyType_t::ifIpUnspec);
8970 getOptional<PacketCapturer>(
"rxCapture", p.rxCapture, j);
8971 getOptional<PacketCapturer>(
"txCapture", p.txCapture, j);
8972 getOptional<std::string>(
"meshName", p.meshName, j);
8973 getOptional<std::vector<std::string>>(
"extraMeshes", p.extraMeshes, j);
8974 getOptional<TuningSettings>(
"tuning", p.tuning, j);
8978 JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
8990 IMPLEMENT_JSON_SERIALIZATION()
9025 configurationVersion = 0;
9029 static void to_json(nlohmann::json& j,
const PlatformDiscoveredService& p)
9035 TOJSON_IMPL(address),
9037 TOJSON_IMPL(configurationVersion)
9040 static void from_json(
const nlohmann::json& j, PlatformDiscoveredService& p)
9043 getOptional<std::string>(
"id", p.id, j);
9044 getOptional<std::string>(
"type", p.type, j);
9045 getOptional<std::string>(
"name", p.name, j);
9046 getOptional<NetworkAddress>(
"address", p.address, j);
9047 getOptional<std::string>(
"uri", p.uri, j);
9048 getOptional<uint32_t>(
"configurationVersion", p.configurationVersion, j, 0);
9088 IMPLEMENT_JSON_SERIALIZATION()
9134 mostRecentFirst =
true;
9135 startedOnOrAfter = 0;
9136 endedOnOrBefore = 0;
9139 onlyCommitted =
true;
9147 static void to_json(nlohmann::json& j,
const TimelineQueryParameters& p)
9150 TOJSON_IMPL(maxCount),
9151 TOJSON_IMPL(mostRecentFirst),
9152 TOJSON_IMPL(startedOnOrAfter),
9153 TOJSON_IMPL(endedOnOrBefore),
9154 TOJSON_IMPL(onlyDirection),
9155 TOJSON_IMPL(onlyType),
9156 TOJSON_IMPL(onlyCommitted),
9157 TOJSON_IMPL(onlyAlias),
9158 TOJSON_IMPL(onlyNodeId),
9159 TOJSON_IMPL(onlyTxId),
9163 static void from_json(
const nlohmann::json& j, TimelineQueryParameters& p)
9166 getOptional<long>(
"maxCount", p.maxCount, j, 50);
9167 getOptional<bool>(
"mostRecentFirst", p.mostRecentFirst, j,
false);
9168 getOptional<uint64_t>(
"startedOnOrAfter", p.startedOnOrAfter, j, 0);
9169 getOptional<uint64_t>(
"endedOnOrBefore", p.endedOnOrBefore, j, 0);
9170 getOptional<int>(
"onlyDirection", p.onlyDirection, j, 0);
9171 getOptional<int>(
"onlyType", p.onlyType, j, 0);
9172 getOptional<bool>(
"onlyCommitted", p.onlyCommitted, j,
true);
9173 getOptional<std::string>(
"onlyAlias", p.onlyAlias, j, EMPTY_STRING);
9174 getOptional<std::string>(
"onlyNodeId", p.onlyNodeId, j, EMPTY_STRING);
9175 getOptional<int>(
"onlyTxId", p.onlyTxId, j, 0);
9176 getOptional<std::string>(
"sql", p.sql, j, EMPTY_STRING);
9180 JSON_SERIALIZED_CLASS(CertStoreCertificate)
9189 IMPLEMENT_JSON_SERIALIZATION()
9216 certificatePem.clear();
9217 privateKeyPem.clear();
9218 internalData =
nullptr;
9223 static void to_json(nlohmann::json& j,
const CertStoreCertificate& p)
9227 TOJSON_IMPL(certificatePem),
9228 TOJSON_IMPL(privateKeyPem),
9232 static void from_json(
const nlohmann::json& j, CertStoreCertificate& p)
9235 j.at(
"id").get_to(p.id);
9236 j.at(
"certificatePem").get_to(p.certificatePem);
9237 getOptional<std::string>(
"privateKeyPem", p.privateKeyPem, j, EMPTY_STRING);
9238 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
9242 JSON_SERIALIZED_CLASS(CertStore)
9251 IMPLEMENT_JSON_SERIALIZATION()
9269 certificates.clear();
9273 static void to_json(nlohmann::json& j,
const CertStore& p)
9277 TOJSON_IMPL(certificates)
9280 static void from_json(
const nlohmann::json& j, CertStore& p)
9283 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9284 getOptional<std::vector<CertStoreCertificate>>(
"certificates", p.certificates, j);
9288 JSON_SERIALIZED_CLASS(CertStoreCertificateElement)
9297 IMPLEMENT_JSON_SERIALIZATION()
9321 hasPrivateKey =
false;
9326 static void to_json(nlohmann::json& j,
const CertStoreCertificateElement& p)
9330 TOJSON_IMPL(hasPrivateKey),
9334 if(!p.certificatePem.empty())
9336 j[
"certificatePem"] = p.certificatePem;
9339 static void from_json(
const nlohmann::json& j, CertStoreCertificateElement& p)
9342 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9343 getOptional<bool>(
"hasPrivateKey", p.hasPrivateKey, j,
false);
9344 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
9345 getOptional<std::string>(
"tags", p.tags, j, EMPTY_STRING);
9349 JSON_SERIALIZED_CLASS(CertStoreDescriptor)
9358 IMPLEMENT_JSON_SERIALIZATION()
9388 certificates.clear();
9392 static void to_json(nlohmann::json& j,
const CertStoreDescriptor& p)
9396 TOJSON_IMPL(fileName),
9397 TOJSON_IMPL(version),
9399 TOJSON_IMPL(certificates)
9402 static void from_json(
const nlohmann::json& j, CertStoreDescriptor& p)
9405 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9406 getOptional<std::string>(
"fileName", p.fileName, j, EMPTY_STRING);
9407 getOptional<int>(
"version", p.version, j, 0);
9408 getOptional<int>(
"flags", p.flags, j, 0);
9409 getOptional<std::vector<CertStoreCertificateElement>>(
"certificates", p.certificates, j);
9413 JSON_SERIALIZED_CLASS(CertificateSubjectElement)
9422 IMPLEMENT_JSON_SERIALIZATION()
9444 static void to_json(nlohmann::json& j,
const CertificateSubjectElement& p)
9451 static void from_json(
const nlohmann::json& j, CertificateSubjectElement& p)
9454 getOptional<std::string>(
"name", p.name, j, EMPTY_STRING);
9455 getOptional<std::string>(
"value", p.value, j, EMPTY_STRING);
9460 JSON_SERIALIZED_CLASS(CertificateDescriptor)
9469 IMPLEMENT_JSON_SERIALIZATION()
9520 fingerprint.clear();
9521 subjectElements.clear();
9522 certificatePem.clear();
9523 publicKeyPem.clear();
9527 static void to_json(nlohmann::json& j,
const CertificateDescriptor& p)
9530 TOJSON_IMPL(subject),
9531 TOJSON_IMPL(issuer),
9532 TOJSON_IMPL(selfSigned),
9533 TOJSON_IMPL(version),
9534 TOJSON_IMPL(notBefore),
9535 TOJSON_IMPL(notAfter),
9536 TOJSON_IMPL(serial),
9537 TOJSON_IMPL(fingerprint),
9538 TOJSON_IMPL(subjectElements),
9539 TOJSON_IMPL(certificatePem),
9540 TOJSON_IMPL(publicKeyPem)
9543 static void from_json(
const nlohmann::json& j, CertificateDescriptor& p)
9546 getOptional<std::string>(
"subject", p.subject, j, EMPTY_STRING);
9547 getOptional<std::string>(
"issuer", p.issuer, j, EMPTY_STRING);
9548 getOptional<bool>(
"selfSigned", p.selfSigned, j,
false);
9549 getOptional<int>(
"version", p.version, j, 0);
9550 getOptional<std::string>(
"notBefore", p.notBefore, j, EMPTY_STRING);
9551 getOptional<std::string>(
"notAfter", p.notAfter, j, EMPTY_STRING);
9552 getOptional<std::string>(
"serial", p.serial, j, EMPTY_STRING);
9553 getOptional<std::string>(
"fingerprint", p.fingerprint, j, EMPTY_STRING);
9554 getOptional<std::string>(
"certificatePem", p.certificatePem, j, EMPTY_STRING);
9555 getOptional<std::string>(
"publicKeyPem", p.publicKeyPem, j, EMPTY_STRING);
9556 getOptional<std::vector<CertificateSubjectElement>>(
"subjectElements", p.subjectElements, j);
9561 JSON_SERIALIZED_CLASS(RiffDescriptor)
9573 IMPLEMENT_JSON_SERIALIZATION()
9614 certDescriptor.clear();
9619 static void to_json(nlohmann::json& j,
const RiffDescriptor& p)
9623 TOJSON_IMPL(verified),
9624 TOJSON_IMPL(channels),
9625 TOJSON_IMPL(sampleCount),
9627 TOJSON_IMPL(certPem),
9628 TOJSON_IMPL(certDescriptor),
9629 TOJSON_IMPL(signature)
9633 static void from_json(
const nlohmann::json& j, RiffDescriptor& p)
9636 FROMJSON_IMPL(file, std::string, EMPTY_STRING);
9637 FROMJSON_IMPL(verified,
bool,
false);
9638 FROMJSON_IMPL(channels,
int, 0);
9639 FROMJSON_IMPL(sampleCount,
int, 0);
9640 FROMJSON_IMPL(meta, std::string, EMPTY_STRING);
9641 FROMJSON_IMPL(certPem, std::string, EMPTY_STRING);
9642 getOptional<CertificateDescriptor>(
"certDescriptor", p.certDescriptor, j);
9643 FROMJSON_IMPL(signature, std::string, EMPTY_STRING);
9648 JSON_SERIALIZED_CLASS(BridgeCreationDetail)
9657 IMPLEMENT_JSON_SERIALIZATION()
9675 csAlreadyExists = -3,
9678 csInvalidConfiguration = -4,
9684 csInsufficientGroups = -6,
9687 csTooManyGroups = -7,
9690 csDuplicateGroup = -8,
9693 csLocalLoopDetected = -9,
9710 status = csUndefined;
9714 static void to_json(nlohmann::json& j,
const BridgeCreationDetail& p)
9721 static void from_json(
const nlohmann::json& j, BridgeCreationDetail& p)
9724 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9725 getOptional<BridgeCreationDetail::CreationStatus_t>(
"status", p.status, j, BridgeCreationDetail::CreationStatus_t::csUndefined);
9728 JSON_SERIALIZED_CLASS(GroupConnectionDetail)
9737 IMPLEMENT_JSON_SERIALIZATION()
9749 ctDirectDatagram = 1,
9778 connectionType = ctUndefined;
9785 static void to_json(nlohmann::json& j,
const GroupConnectionDetail& p)
9789 TOJSON_IMPL(connectionType),
9791 TOJSON_IMPL(asFailover),
9797 j[
"asFailover"] = p.asFailover;
9800 static void from_json(
const nlohmann::json& j, GroupConnectionDetail& p)
9803 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9804 getOptional<GroupConnectionDetail::ConnectionType_t>(
"connectionType", p.connectionType, j, GroupConnectionDetail::ConnectionType_t::ctUndefined);
9805 getOptional<std::string>(
"peer", p.peer, j, EMPTY_STRING);
9806 getOptional<bool>(
"asFailover", p.asFailover, j,
false);
9807 getOptional<std::string>(
"reason", p.reason, j, EMPTY_STRING);
9811 JSON_SERIALIZED_CLASS(GroupTxDetail)
9820 IMPLEMENT_JSON_SERIALIZATION()
9838 txsNotAnAudioGroup = -1,
9844 txsNotConnected = -3,
9847 txsAlreadyTransmitting = -4,
9850 txsInvalidParams = -5,
9853 txsPriorityTooLow = -6,
9856 txsRxActiveOnNonFdx = -7,
9859 txsCannotSubscribeToInput = -8,
9865 txsTxEndedWithFailure = -10,
9894 status = txsUndefined;
9897 nonFdxMsHangRemaining = 0;
9902 static void to_json(nlohmann::json& j,
const GroupTxDetail& p)
9906 TOJSON_IMPL(status),
9907 TOJSON_IMPL(localPriority),
9912 if(p.status == GroupTxDetail::TxStatus_t::txsPriorityTooLow)
9914 j[
"remotePriority"] = p.remotePriority;
9916 else if(p.status == GroupTxDetail::TxStatus_t::txsRxActiveOnNonFdx)
9918 j[
"nonFdxMsHangRemaining"] = p.nonFdxMsHangRemaining;
9921 static void from_json(
const nlohmann::json& j, GroupTxDetail& p)
9924 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
9925 getOptional<GroupTxDetail::TxStatus_t>(
"status", p.status, j, GroupTxDetail::TxStatus_t::txsUndefined);
9926 getOptional<int>(
"localPriority", p.localPriority, j, 0);
9927 getOptional<int>(
"remotePriority", p.remotePriority, j, 0);
9928 getOptional<long>(
"nonFdxMsHangRemaining", p.nonFdxMsHangRemaining, j, 0);
9929 getOptional<uint32_t>(
"txId", p.txId, j, 0);
9933 JSON_SERIALIZED_CLASS(GroupCreationDetail)
9942 IMPLEMENT_JSON_SERIALIZATION()
9960 csConflictingRpListAndCluster = -2,
9963 csAlreadyExists = -3,
9966 csInvalidConfiguration = -4,
9972 csCryptoFailure = -6,
9975 csAudioInputFailure = -7,
9978 csAudioOutputFailure = -8,
9981 csUnsupportedAudioEncoder = -9,
9987 csInvalidTransport = -11,
10004 status = csUndefined;
10008 static void to_json(nlohmann::json& j,
const GroupCreationDetail& p)
10010 j = nlohmann::json{
10012 TOJSON_IMPL(status)
10015 static void from_json(
const nlohmann::json& j, GroupCreationDetail& p)
10018 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10019 getOptional<GroupCreationDetail::CreationStatus_t>(
"status", p.status, j, GroupCreationDetail::CreationStatus_t::csUndefined);
10024 JSON_SERIALIZED_CLASS(GroupReconfigurationDetail)
10033 IMPLEMENT_JSON_SERIALIZATION()
10051 rsInvalidConfiguration = -2,
10054 rsInvalidJson = -3,
10057 rsAudioInputFailure = -4,
10060 rsAudioOutputFailure = -5,
10063 rsDoesNotExist = -6,
10066 rsAudioInputInUse = -7,
10069 rsAudioDisabledForGroup = -8,
10072 rsGroupIsNotAudio = -9
10073 } ReconfigurationStatus_t;
10089 status = rsUndefined;
10093 static void to_json(nlohmann::json& j,
const GroupReconfigurationDetail& p)
10095 j = nlohmann::json{
10097 TOJSON_IMPL(status)
10100 static void from_json(
const nlohmann::json& j, GroupReconfigurationDetail& p)
10103 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10104 getOptional<GroupReconfigurationDetail::ReconfigurationStatus_t>(
"status", p.status, j, GroupReconfigurationDetail::ReconfigurationStatus_t::rsUndefined);
10109 JSON_SERIALIZED_CLASS(GroupHealthReport)
10118 IMPLEMENT_JSON_SERIALIZATION()
10124 uint64_t lastErrorTs;
10125 uint64_t decryptionErrors;
10126 uint64_t encryptionErrors;
10127 uint64_t unsupportDecoderErrors;
10128 uint64_t decoderFailures;
10129 uint64_t decoderStartFailures;
10130 uint64_t inboundRtpPacketAllocationFailures;
10131 uint64_t inboundRtpPacketLoadFailures;
10132 uint64_t latePacketsDiscarded;
10133 uint64_t jitterBufferInsertionFailures;
10134 uint64_t presenceDeserializationFailures;
10135 uint64_t notRtpErrors;
10136 uint64_t generalErrors;
10137 uint64_t inboundRtpProcessorAllocationFailures;
10148 decryptionErrors = 0;
10149 encryptionErrors = 0;
10150 unsupportDecoderErrors = 0;
10151 decoderFailures = 0;
10152 decoderStartFailures = 0;
10153 inboundRtpPacketAllocationFailures = 0;
10154 inboundRtpPacketLoadFailures = 0;
10155 latePacketsDiscarded = 0;
10156 jitterBufferInsertionFailures = 0;
10157 presenceDeserializationFailures = 0;
10160 inboundRtpProcessorAllocationFailures = 0;
10166 j = nlohmann::json{
10168 TOJSON_IMPL(lastErrorTs),
10169 TOJSON_IMPL(decryptionErrors),
10170 TOJSON_IMPL(encryptionErrors),
10171 TOJSON_IMPL(unsupportDecoderErrors),
10172 TOJSON_IMPL(decoderFailures),
10173 TOJSON_IMPL(decoderStartFailures),
10174 TOJSON_IMPL(inboundRtpPacketAllocationFailures),
10175 TOJSON_IMPL(inboundRtpPacketLoadFailures),
10176 TOJSON_IMPL(latePacketsDiscarded),
10177 TOJSON_IMPL(jitterBufferInsertionFailures),
10178 TOJSON_IMPL(presenceDeserializationFailures),
10179 TOJSON_IMPL(notRtpErrors),
10180 TOJSON_IMPL(generalErrors),
10181 TOJSON_IMPL(inboundRtpProcessorAllocationFailures)
10184 static void from_json(
const nlohmann::json& j, GroupHealthReport& p)
10187 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10188 getOptional<uint64_t>(
"lastErrorTs", p.lastErrorTs, j, 0);
10189 getOptional<uint64_t>(
"decryptionErrors", p.decryptionErrors, j, 0);
10190 getOptional<uint64_t>(
"encryptionErrors", p.encryptionErrors, j, 0);
10191 getOptional<uint64_t>(
"unsupportDecoderErrors", p.unsupportDecoderErrors, j, 0);
10192 getOptional<uint64_t>(
"decoderFailures", p.decoderFailures, j, 0);
10193 getOptional<uint64_t>(
"decoderStartFailures", p.decoderStartFailures, j, 0);
10194 getOptional<uint64_t>(
"inboundRtpPacketAllocationFailures", p.inboundRtpPacketAllocationFailures, j, 0);
10195 getOptional<uint64_t>(
"inboundRtpPacketLoadFailures", p.inboundRtpPacketLoadFailures, j, 0);
10196 getOptional<uint64_t>(
"latePacketsDiscarded", p.latePacketsDiscarded, j, 0);
10197 getOptional<uint64_t>(
"jitterBufferInsertionFailures", p.jitterBufferInsertionFailures, j, 0);
10198 getOptional<uint64_t>(
"presenceDeserializationFailures", p.presenceDeserializationFailures, j, 0);
10199 getOptional<uint64_t>(
"notRtpErrors", p.notRtpErrors, j, 0);
10200 getOptional<uint64_t>(
"generalErrors", p.generalErrors, j, 0);
10201 getOptional<uint64_t>(
"inboundRtpProcessorAllocationFailures", p.inboundRtpProcessorAllocationFailures, j, 0);
10205 JSON_SERIALIZED_CLASS(InboundProcessorStats)
10214 IMPLEMENT_JSON_SERIALIZATION()
10221 uint64_t minRtpSamplesInQueue;
10222 uint64_t maxRtpSamplesInQueue;
10223 uint64_t totalSamplesTrimmed;
10224 uint64_t underruns;
10226 uint64_t samplesInQueue;
10227 uint64_t totalPacketsReceived;
10228 uint64_t totalPacketsLost;
10229 uint64_t totalPacketsDiscarded;
10240 minRtpSamplesInQueue = 0;
10241 maxRtpSamplesInQueue = 0;
10242 totalSamplesTrimmed = 0;
10245 samplesInQueue = 0;
10246 totalPacketsReceived = 0;
10247 totalPacketsLost = 0;
10248 totalPacketsDiscarded = 0;
10254 j = nlohmann::json{
10256 TOJSON_IMPL(jitter),
10257 TOJSON_IMPL(minRtpSamplesInQueue),
10258 TOJSON_IMPL(maxRtpSamplesInQueue),
10259 TOJSON_IMPL(totalSamplesTrimmed),
10260 TOJSON_IMPL(underruns),
10261 TOJSON_IMPL(overruns),
10262 TOJSON_IMPL(samplesInQueue),
10263 TOJSON_IMPL(totalPacketsReceived),
10264 TOJSON_IMPL(totalPacketsLost),
10265 TOJSON_IMPL(totalPacketsDiscarded)
10268 static void from_json(
const nlohmann::json& j, InboundProcessorStats& p)
10271 getOptional<uint32_t>(
"ssrc", p.ssrc, j, 0);
10272 getOptional<double>(
"jitter", p.jitter, j, 0.0);
10273 getOptional<uint64_t>(
"minRtpSamplesInQueue", p.minRtpSamplesInQueue, j, 0);
10274 getOptional<uint64_t>(
"maxRtpSamplesInQueue", p.maxRtpSamplesInQueue, j, 0);
10275 getOptional<uint64_t>(
"totalSamplesTrimmed", p.totalSamplesTrimmed, j, 0);
10276 getOptional<uint64_t>(
"underruns", p.underruns, j, 0);
10277 getOptional<uint64_t>(
"overruns", p.overruns, j, 0);
10278 getOptional<uint64_t>(
"samplesInQueue", p.samplesInQueue, j, 0);
10279 getOptional<uint64_t>(
"totalPacketsReceived", p.totalPacketsReceived, j, 0);
10280 getOptional<uint64_t>(
"totalPacketsLost", p.totalPacketsLost, j, 0);
10281 getOptional<uint64_t>(
"totalPacketsDiscarded", p.totalPacketsDiscarded, j, 0);
10285 JSON_SERIALIZED_CLASS(TrafficCounter)
10294 IMPLEMENT_JSON_SERIALIZATION()
10318 j = nlohmann::json{
10319 TOJSON_IMPL(packets),
10320 TOJSON_IMPL(bytes),
10321 TOJSON_IMPL(errors)
10324 static void from_json(
const nlohmann::json& j, TrafficCounter& p)
10327 getOptional<uint64_t>(
"packets", p.packets, j, 0);
10328 getOptional<uint64_t>(
"bytes", p.bytes, j, 0);
10329 getOptional<uint64_t>(
"errors", p.errors, j, 0);
10333 JSON_SERIALIZED_CLASS(GroupStats)
10342 IMPLEMENT_JSON_SERIALIZATION()
10343 IMPLEMENT_WRAPPED_JSON_SERIALIZATION(
GroupStats)
10366 static void to_json(nlohmann::json& j,
const GroupStats& p)
10368 j = nlohmann::json{
10371 TOJSON_IMPL(rxTraffic),
10372 TOJSON_IMPL(txTraffic)
10375 static void from_json(
const nlohmann::json& j, GroupStats& p)
10378 getOptional<std::string>(
"id", p.id, j, EMPTY_STRING);
10380 getOptional<TrafficCounter>(
"rxTraffic", p.rxTraffic, j);
10381 getOptional<TrafficCounter>(
"txTraffic", p.txTraffic, j);
10385 JSON_SERIALIZED_CLASS(RallypointConnectionDetail)
10394 IMPLEMENT_JSON_SERIALIZATION()
10418 internalId.clear();
10421 msToNextConnectionAttempt = 0;
10425 static void to_json(nlohmann::json& j,
const RallypointConnectionDetail& p)
10427 j = nlohmann::json{
10428 TOJSON_IMPL(internalId),
10433 if(p.msToNextConnectionAttempt > 0)
10435 j[
"msToNextConnectionAttempt"] = p.msToNextConnectionAttempt;
10438 static void from_json(
const nlohmann::json& j, RallypointConnectionDetail& p)
10441 getOptional<std::string>(
"internalId", p.internalId, j, EMPTY_STRING);
10442 getOptional<std::string>(
"host", p.host, j, EMPTY_STRING);
10443 getOptional<int>(
"port", p.port, j, 0);
10444 getOptional<uint64_t>(
"msToNextConnectionAttempt", p.msToNextConnectionAttempt, j, 0);
10448 JSON_SERIALIZED_CLASS(TranslationSession)
10460 IMPLEMENT_JSON_SERIALIZATION()
10490 static void to_json(nlohmann::json& j,
const TranslationSession& p)
10492 j = nlohmann::json{
10495 TOJSON_IMPL(groups),
10496 TOJSON_IMPL(enabled)
10499 static void from_json(
const nlohmann::json& j, TranslationSession& p)
10502 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
10503 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
10504 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
10505 FROMJSON_IMPL(enabled,
bool,
true);
10509 JSON_SERIALIZED_CLASS(TranslationConfiguration)
10521 IMPLEMENT_JSON_SERIALIZATION()
10543 static void to_json(nlohmann::json& j,
const TranslationConfiguration& p)
10545 j = nlohmann::json{
10546 TOJSON_IMPL(sessions),
10547 TOJSON_IMPL(groups)
10550 static void from_json(
const nlohmann::json& j, TranslationConfiguration& p)
10553 getOptional<std::vector<TranslationSession>>(
"sessions", p.sessions, j);
10554 getOptional<std::vector<Group>>(
"groups", p.groups, j);
10558 JSON_SERIALIZED_CLASS(LingoServerStatusReportConfiguration)
10570 IMPLEMENT_JSON_SERIALIZATION()
10605 includeGroupDetail =
false;
10606 includeSessionDetail =
false;
10607 includeSessionGroupDetail =
false;
10612 static void to_json(nlohmann::json& j,
const LingoServerStatusReportConfiguration& p)
10614 j = nlohmann::json{
10615 TOJSON_IMPL(fileName),
10616 TOJSON_IMPL(intervalSecs),
10617 TOJSON_IMPL(enabled),
10618 TOJSON_IMPL(includeGroupDetail),
10619 TOJSON_IMPL(includeSessionDetail),
10620 TOJSON_IMPL(includeSessionGroupDetail),
10621 TOJSON_IMPL(runCmd)
10624 static void from_json(
const nlohmann::json& j, LingoServerStatusReportConfiguration& p)
10627 getOptional<std::string>(
"fileName", p.fileName, j);
10628 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
10629 getOptional<bool>(
"enabled", p.enabled, j,
false);
10630 getOptional<std::string>(
"runCmd", p.runCmd, j);
10631 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
10632 getOptional<bool>(
"includeSessionDetail", p.includeSessionDetail, j,
false);
10633 getOptional<bool>(
"includeSessionGroupDetail", p.includeSessionGroupDetail, j,
false);
10637 JSON_SERIALIZED_CLASS(LingoServerInternals)
10651 IMPLEMENT_JSON_SERIALIZATION()
10673 housekeeperIntervalMs = 1000;
10677 static void to_json(nlohmann::json& j,
const LingoServerInternals& p)
10679 j = nlohmann::json{
10680 TOJSON_IMPL(watchdog),
10681 TOJSON_IMPL(housekeeperIntervalMs),
10682 TOJSON_IMPL(tuning)
10685 static void from_json(
const nlohmann::json& j, LingoServerInternals& p)
10688 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
10689 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
10690 getOptional<TuningSettings>(
"tuning", p.tuning, j);
10694 JSON_SERIALIZED_CLASS(LingoServerConfiguration)
10705 IMPLEMENT_JSON_SERIALIZATION()
10762 serviceConfigurationFileCheckSecs = 60;
10763 lingoConfigurationFileName.clear();
10764 lingoConfigurationFileCommand.clear();
10765 lingoConfigurationFileCheckSecs = 60;
10766 statusReport.clear();
10767 externalHealthCheckResponder.clear();
10769 certStoreFileName.clear();
10770 certStorePasswordHex.clear();
10771 enginePolicy.clear();
10772 configurationCheckSignalName =
"rts.22f4ec3.${id}";
10773 fipsCrypto.clear();
10779 static void to_json(nlohmann::json& j,
const LingoServerConfiguration& p)
10781 j = nlohmann::json{
10783 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
10784 TOJSON_IMPL(lingoConfigurationFileName),
10785 TOJSON_IMPL(lingoConfigurationFileCommand),
10786 TOJSON_IMPL(lingoConfigurationFileCheckSecs),
10787 TOJSON_IMPL(statusReport),
10788 TOJSON_IMPL(externalHealthCheckResponder),
10789 TOJSON_IMPL(internals),
10790 TOJSON_IMPL(certStoreFileName),
10791 TOJSON_IMPL(certStorePasswordHex),
10792 TOJSON_IMPL(enginePolicy),
10793 TOJSON_IMPL(configurationCheckSignalName),
10794 TOJSON_IMPL(fipsCrypto),
10795 TOJSON_IMPL(proxy),
10799 static void from_json(
const nlohmann::json& j, LingoServerConfiguration& p)
10802 getOptional<std::string>(
"id", p.id, j);
10803 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
10804 getOptional<std::string>(
"lingoConfigurationFileName", p.lingoConfigurationFileName, j);
10805 getOptional<std::string>(
"lingoConfigurationFileCommand", p.lingoConfigurationFileCommand, j);
10806 getOptional<int>(
"lingoConfigurationFileCheckSecs", p.lingoConfigurationFileCheckSecs, j, 60);
10807 getOptional<LingoServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
10808 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
10809 getOptional<LingoServerInternals>(
"internals", p.internals, j);
10810 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
10811 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
10812 j.at(
"enginePolicy").get_to(p.enginePolicy);
10813 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.22f4ec3.${id}");
10814 getOptional<FipsCryptoSettings>(
"fipsCrypo", p.fipsCrypto, j);
10815 getOptional<NetworkAddress>(
"proxy", p.proxy, j);
10816 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
10821 JSON_SERIALIZED_CLASS(VoiceToVoiceSession)
10833 IMPLEMENT_JSON_SERIALIZATION()
10863 static void to_json(nlohmann::json& j,
const VoiceToVoiceSession& p)
10865 j = nlohmann::json{
10868 TOJSON_IMPL(groups),
10869 TOJSON_IMPL(enabled)
10872 static void from_json(
const nlohmann::json& j, VoiceToVoiceSession& p)
10875 FROMJSON_IMPL(
id, std::string, EMPTY_STRING);
10876 FROMJSON_IMPL(name, std::string, EMPTY_STRING);
10877 getOptional<std::vector<std::string>>(
"groups", p.groups, j);
10878 FROMJSON_IMPL(enabled,
bool,
true);
10882 JSON_SERIALIZED_CLASS(LingoConfiguration)
10894 IMPLEMENT_JSON_SERIALIZATION()
10911 voiceToVoiceSessions.clear();
10916 static void to_json(nlohmann::json& j,
const LingoConfiguration& p)
10918 j = nlohmann::json{
10919 TOJSON_IMPL(voiceToVoiceSessions),
10920 TOJSON_IMPL(groups)
10923 static void from_json(
const nlohmann::json& j, LingoConfiguration& p)
10926 getOptional<std::vector<VoiceToVoiceSession>>(
"voiceToVoiceSessions", p.voiceToVoiceSessions, j);
10927 getOptional<std::vector<Group>>(
"groups", p.groups, j);
10931 JSON_SERIALIZED_CLASS(BridgingConfiguration)
10943 IMPLEMENT_JSON_SERIALIZATION()
10965 static void to_json(nlohmann::json& j,
const BridgingConfiguration& p)
10967 j = nlohmann::json{
10968 TOJSON_IMPL(bridges),
10969 TOJSON_IMPL(groups)
10972 static void from_json(
const nlohmann::json& j, BridgingConfiguration& p)
10975 getOptional<std::vector<Bridge>>(
"bridges", p.bridges, j);
10976 getOptional<std::vector<Group>>(
"groups", p.groups, j);
10980 JSON_SERIALIZED_CLASS(BridgingServerStatusReportConfiguration)
10992 IMPLEMENT_JSON_SERIALIZATION()
11027 includeGroupDetail =
false;
11028 includeBridgeDetail =
false;
11029 includeBridgeGroupDetail =
false;
11034 static void to_json(nlohmann::json& j,
const BridgingServerStatusReportConfiguration& p)
11036 j = nlohmann::json{
11037 TOJSON_IMPL(fileName),
11038 TOJSON_IMPL(intervalSecs),
11039 TOJSON_IMPL(enabled),
11040 TOJSON_IMPL(includeGroupDetail),
11041 TOJSON_IMPL(includeBridgeDetail),
11042 TOJSON_IMPL(includeBridgeGroupDetail),
11043 TOJSON_IMPL(runCmd)
11046 static void from_json(
const nlohmann::json& j, BridgingServerStatusReportConfiguration& p)
11049 getOptional<std::string>(
"fileName", p.fileName, j);
11050 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11051 getOptional<bool>(
"enabled", p.enabled, j,
false);
11052 getOptional<std::string>(
"runCmd", p.runCmd, j);
11053 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11054 getOptional<bool>(
"includeBridgeDetail", p.includeBridgeDetail, j,
false);
11055 getOptional<bool>(
"includeBridgeGroupDetail", p.includeBridgeGroupDetail, j,
false);
11059 JSON_SERIALIZED_CLASS(BridgingServerInternals)
11073 IMPLEMENT_JSON_SERIALIZATION()
11095 housekeeperIntervalMs = 1000;
11099 static void to_json(nlohmann::json& j,
const BridgingServerInternals& p)
11101 j = nlohmann::json{
11102 TOJSON_IMPL(watchdog),
11103 TOJSON_IMPL(housekeeperIntervalMs),
11104 TOJSON_IMPL(tuning)
11107 static void from_json(
const nlohmann::json& j, BridgingServerInternals& p)
11110 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11111 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11112 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11116 JSON_SERIALIZED_CLASS(BridgingServerConfiguration)
11127 IMPLEMENT_JSON_SERIALIZATION()
11138 omPayloadTransformation = 1,
11141 omAnonymousMixing = 2,
11144 omLanguageTranslation = 3
11201 serviceConfigurationFileCheckSecs = 60;
11202 bridgingConfigurationFileName.clear();
11203 bridgingConfigurationFileCommand.clear();
11204 bridgingConfigurationFileCheckSecs = 60;
11205 statusReport.clear();
11206 externalHealthCheckResponder.clear();
11208 certStoreFileName.clear();
11209 certStorePasswordHex.clear();
11210 enginePolicy.clear();
11211 configurationCheckSignalName =
"rts.6cc0651.${id}";
11212 fipsCrypto.clear();
11217 static void to_json(nlohmann::json& j,
const BridgingServerConfiguration& p)
11219 j = nlohmann::json{
11222 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11223 TOJSON_IMPL(bridgingConfigurationFileName),
11224 TOJSON_IMPL(bridgingConfigurationFileCommand),
11225 TOJSON_IMPL(bridgingConfigurationFileCheckSecs),
11226 TOJSON_IMPL(statusReport),
11227 TOJSON_IMPL(externalHealthCheckResponder),
11228 TOJSON_IMPL(internals),
11229 TOJSON_IMPL(certStoreFileName),
11230 TOJSON_IMPL(certStorePasswordHex),
11231 TOJSON_IMPL(enginePolicy),
11232 TOJSON_IMPL(configurationCheckSignalName),
11233 TOJSON_IMPL(fipsCrypto),
11237 static void from_json(
const nlohmann::json& j, BridgingServerConfiguration& p)
11240 getOptional<std::string>(
"id", p.id, j);
11241 getOptional<BridgingServerConfiguration::OpMode_t>(
"mode", p.mode, j, BridgingServerConfiguration::OpMode_t::omRaw);
11242 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11243 getOptional<std::string>(
"bridgingConfigurationFileName", p.bridgingConfigurationFileName, j);
11244 getOptional<std::string>(
"bridgingConfigurationFileCommand", p.bridgingConfigurationFileCommand, j);
11245 getOptional<int>(
"bridgingConfigurationFileCheckSecs", p.bridgingConfigurationFileCheckSecs, j, 60);
11246 getOptional<BridgingServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11247 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11248 getOptional<BridgingServerInternals>(
"internals", p.internals, j);
11249 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11250 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11251 j.at(
"enginePolicy").get_to(p.enginePolicy);
11252 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.6cc0651.${id}");
11253 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11254 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11259 JSON_SERIALIZED_CLASS(EarGroupsConfiguration)
11271 IMPLEMENT_JSON_SERIALIZATION()
11289 static void to_json(nlohmann::json& j,
const EarGroupsConfiguration& p)
11291 j = nlohmann::json{
11292 TOJSON_IMPL(groups)
11295 static void from_json(
const nlohmann::json& j, EarGroupsConfiguration& p)
11298 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11302 JSON_SERIALIZED_CLASS(EarServerStatusReportConfiguration)
11314 IMPLEMENT_JSON_SERIALIZATION()
11343 includeGroupDetail =
false;
11348 static void to_json(nlohmann::json& j,
const EarServerStatusReportConfiguration& p)
11350 j = nlohmann::json{
11351 TOJSON_IMPL(fileName),
11352 TOJSON_IMPL(intervalSecs),
11353 TOJSON_IMPL(enabled),
11354 TOJSON_IMPL(includeGroupDetail),
11355 TOJSON_IMPL(runCmd)
11358 static void from_json(
const nlohmann::json& j, EarServerStatusReportConfiguration& p)
11361 getOptional<std::string>(
"fileName", p.fileName, j);
11362 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11363 getOptional<bool>(
"enabled", p.enabled, j,
false);
11364 getOptional<std::string>(
"runCmd", p.runCmd, j);
11365 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11369 JSON_SERIALIZED_CLASS(EarServerInternals)
11383 IMPLEMENT_JSON_SERIALIZATION()
11405 housekeeperIntervalMs = 1000;
11409 static void to_json(nlohmann::json& j,
const EarServerInternals& p)
11411 j = nlohmann::json{
11412 TOJSON_IMPL(watchdog),
11413 TOJSON_IMPL(housekeeperIntervalMs),
11414 TOJSON_IMPL(tuning)
11417 static void from_json(
const nlohmann::json& j, EarServerInternals& p)
11420 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11421 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11422 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11426 JSON_SERIALIZED_CLASS(EarServerConfiguration)
11437 IMPLEMENT_JSON_SERIALIZATION()
11492 serviceConfigurationFileCheckSecs = 60;
11493 groupsConfigurationFileName.clear();
11494 groupsConfigurationFileCommand.clear();
11495 groupsConfigurationFileCheckSecs = 60;
11496 statusReport.clear();
11497 externalHealthCheckResponder.clear();
11499 certStoreFileName.clear();
11500 certStorePasswordHex.clear();
11501 enginePolicy.clear();
11502 configurationCheckSignalName =
"rts.9a164fa.${id}";
11503 fipsCrypto.clear();
11508 static void to_json(nlohmann::json& j,
const EarServerConfiguration& p)
11510 j = nlohmann::json{
11512 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11513 TOJSON_IMPL(groupsConfigurationFileName),
11514 TOJSON_IMPL(groupsConfigurationFileCommand),
11515 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
11516 TOJSON_IMPL(statusReport),
11517 TOJSON_IMPL(externalHealthCheckResponder),
11518 TOJSON_IMPL(internals),
11519 TOJSON_IMPL(certStoreFileName),
11520 TOJSON_IMPL(certStorePasswordHex),
11521 TOJSON_IMPL(enginePolicy),
11522 TOJSON_IMPL(configurationCheckSignalName),
11523 TOJSON_IMPL(fipsCrypto),
11527 static void from_json(
const nlohmann::json& j, EarServerConfiguration& p)
11530 getOptional<std::string>(
"id", p.id, j);
11531 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11532 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
11533 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
11534 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
11535 getOptional<EarServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11536 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11537 getOptional<EarServerInternals>(
"internals", p.internals, j);
11538 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11539 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11540 j.at(
"enginePolicy").get_to(p.enginePolicy);
11541 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
11542 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11543 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11547 JSON_SERIALIZED_CLASS(EngageSemGroupsConfiguration)
11559 IMPLEMENT_JSON_SERIALIZATION()
11577 static void to_json(nlohmann::json& j,
const EngageSemGroupsConfiguration& p)
11579 j = nlohmann::json{
11580 TOJSON_IMPL(groups)
11583 static void from_json(
const nlohmann::json& j, EngageSemGroupsConfiguration& p)
11586 getOptional<std::vector<Group>>(
"groups", p.groups, j);
11590 JSON_SERIALIZED_CLASS(EngageSemServerStatusReportConfiguration)
11602 IMPLEMENT_JSON_SERIALIZATION()
11631 includeGroupDetail =
false;
11636 static void to_json(nlohmann::json& j,
const EngageSemServerStatusReportConfiguration& p)
11638 j = nlohmann::json{
11639 TOJSON_IMPL(fileName),
11640 TOJSON_IMPL(intervalSecs),
11641 TOJSON_IMPL(enabled),
11642 TOJSON_IMPL(includeGroupDetail),
11643 TOJSON_IMPL(runCmd)
11646 static void from_json(
const nlohmann::json& j, EngageSemServerStatusReportConfiguration& p)
11649 getOptional<std::string>(
"fileName", p.fileName, j);
11650 getOptional<int>(
"intervalSecs", p.intervalSecs, j, 60);
11651 getOptional<bool>(
"enabled", p.enabled, j,
false);
11652 getOptional<std::string>(
"runCmd", p.runCmd, j);
11653 getOptional<bool>(
"includeGroupDetail", p.includeGroupDetail, j,
false);
11657 JSON_SERIALIZED_CLASS(EngageSemServerInternals)
11671 IMPLEMENT_JSON_SERIALIZATION()
11693 housekeeperIntervalMs = 1000;
11697 static void to_json(nlohmann::json& j,
const EngageSemServerInternals& p)
11699 j = nlohmann::json{
11700 TOJSON_IMPL(watchdog),
11701 TOJSON_IMPL(housekeeperIntervalMs),
11702 TOJSON_IMPL(tuning)
11705 static void from_json(
const nlohmann::json& j, EngageSemServerInternals& p)
11708 getOptional<WatchdogSettings>(
"watchdog", p.watchdog, j);
11709 getOptional<int>(
"housekeeperIntervalMs", p.housekeeperIntervalMs, j, 1000);
11710 getOptional<TuningSettings>(
"tuning", p.tuning, j);
11714 JSON_SERIALIZED_CLASS(EngageSemServerConfiguration)
11725 IMPLEMENT_JSON_SERIALIZATION()
11786 serviceConfigurationFileCheckSecs = 60;
11787 groupsConfigurationFileName.clear();
11788 groupsConfigurationFileCommand.clear();
11789 groupsConfigurationFileCheckSecs = 60;
11790 statusReport.clear();
11791 externalHealthCheckResponder.clear();
11793 certStoreFileName.clear();
11794 certStorePasswordHex.clear();
11795 enginePolicy.clear();
11796 configurationCheckSignalName =
"rts.9a164fa.${id}";
11797 fipsCrypto.clear();
11802 maxQueuingMs = 15000;
11808 static void to_json(nlohmann::json& j,
const EngageSemServerConfiguration& p)
11810 j = nlohmann::json{
11812 TOJSON_IMPL(serviceConfigurationFileCheckSecs),
11813 TOJSON_IMPL(groupsConfigurationFileName),
11814 TOJSON_IMPL(groupsConfigurationFileCommand),
11815 TOJSON_IMPL(groupsConfigurationFileCheckSecs),
11816 TOJSON_IMPL(statusReport),
11817 TOJSON_IMPL(externalHealthCheckResponder),
11818 TOJSON_IMPL(internals),
11819 TOJSON_IMPL(certStoreFileName),
11820 TOJSON_IMPL(certStorePasswordHex),
11821 TOJSON_IMPL(enginePolicy),
11822 TOJSON_IMPL(configurationCheckSignalName),
11823 TOJSON_IMPL(fipsCrypto),
11825 TOJSON_IMPL(maxQueueLen),
11826 TOJSON_IMPL(minQueuingMs),
11827 TOJSON_IMPL(maxQueuingMs),
11828 TOJSON_IMPL(minPriority),
11829 TOJSON_IMPL(maxPriority)
11832 static void from_json(
const nlohmann::json& j, EngageSemServerConfiguration& p)
11835 getOptional<std::string>(
"id", p.id, j);
11836 getOptional<int>(
"serviceConfigurationFileCheckSecs", p.serviceConfigurationFileCheckSecs, j, 60);
11837 getOptional<std::string>(
"groupsConfigurationFileName", p.groupsConfigurationFileName, j);
11838 getOptional<std::string>(
"groupsConfigurationFileCommand", p.groupsConfigurationFileCommand, j);
11839 getOptional<int>(
"groupsConfigurationFileCheckSecs", p.groupsConfigurationFileCheckSecs, j, 60);
11840 getOptional<EngageSemServerStatusReportConfiguration>(
"statusReport", p.statusReport, j);
11841 getOptional<ExternalHealthCheckResponder>(
"externalHealthCheckResponder", p.externalHealthCheckResponder, j);
11842 getOptional<EngageSemServerInternals>(
"internals", p.internals, j);
11843 getOptional<std::string>(
"certStoreFileName", p.certStoreFileName, j);
11844 getOptional<std::string>(
"certStorePasswordHex", p.certStorePasswordHex, j);
11845 j.at(
"enginePolicy").get_to(p.enginePolicy);
11846 getOptional<std::string>(
"configurationCheckSignalName", p.configurationCheckSignalName, j,
"rts.9a164fa.${id}");
11847 getOptional<FipsCryptoSettings>(
"fipsCrypto", p.fipsCrypto, j);
11848 getOptional<NsmConfiguration>(
"nsm", p.nsm, j);
11849 getOptional<int>(
"maxQueueLen", p.maxQueueLen, j, 64);
11850 getOptional<int>(
"minQueuingMs", p.minQueuingMs, j, 0);
11851 getOptional<int>(
"maxQueuingMs", p.maxQueuingMs, j, 15000);
11852 getOptional<int>(
"minPriority", p.minPriority, j, 0);
11853 getOptional<int>(
"maxPriority", p.maxPriority, j, 255);
11857 static inline void dumpExampleConfigurations(
const char *path)
11859 WatchdogSettings::document();
11860 FileRecordingRequest::document();
11861 Feature::document();
11862 Featureset::document();
11864 RtpPayloadTypeTranslation::document();
11865 NetworkInterfaceDevice::document();
11866 ListOfNetworkInterfaceDevice::document();
11867 RtpHeader::document();
11868 BlobInfo::document();
11869 TxAudioUri::document();
11870 AdvancedTxParams::document();
11871 Identity::document();
11872 Location::document();
11874 Connectivity::document();
11875 PresenceDescriptorGroupItem::document();
11876 PresenceDescriptor::document();
11877 NetworkTxOptions::document();
11878 TcpNetworkTxOptions::document();
11879 NetworkAddress::document();
11880 NetworkAddressRxTx::document();
11881 NetworkAddressRestrictionList::document();
11882 StringRestrictionList::document();
11883 Rallypoint::document();
11884 RallypointCluster::document();
11885 NetworkDeviceDescriptor::document();
11886 TxAudio::document();
11887 AudioDeviceDescriptor::document();
11888 ListOfAudioDeviceDescriptor::document();
11890 TalkerInformation::document();
11891 GroupTalkers::document();
11892 Presence::document();
11893 Advertising::document();
11894 GroupPriorityTranslation::document();
11895 GroupTimeline::document();
11896 GroupAppTransport::document();
11897 RtpProfile::document();
11899 Mission::document();
11900 LicenseDescriptor::document();
11901 EngineNetworkingRpUdpStreaming::document();
11902 EnginePolicyNetworking::document();
11905 Bridge::document();
11906 AndroidAudio::document();
11907 EnginePolicyAudio::document();
11908 SecurityCertificate::document();
11909 EnginePolicySecurity::document();
11910 EnginePolicyLogging::document();
11911 EnginePolicyDatabase::document();
11912 NamedAudioDevice::document();
11913 EnginePolicyNamedAudioDevices::document();
11914 Licensing::document();
11915 DiscoveryMagellan::document();
11916 DiscoverySsdp::document();
11917 DiscoverySap::document();
11918 DiscoveryCistech::document();
11919 DiscoveryTrellisware::document();
11920 DiscoveryConfiguration::document();
11921 EnginePolicyInternals::document();
11922 EnginePolicyTimelines::document();
11923 RtpMapEntry::document();
11924 ExternalModule::document();
11925 ExternalCodecDescriptor::document();
11926 EnginePolicy::document();
11927 TalkgroupAsset::document();
11928 EngageDiscoveredGroup::document();
11929 RallypointPeer::document();
11930 RallypointServerLimits::document();
11931 RallypointServerStatusReportConfiguration::document();
11932 RallypointServerLinkGraph::document();
11933 ExternalHealthCheckResponder::document();
11935 PeeringConfiguration::document();
11936 IgmpSnooping::document();
11937 RallypointReflector::document();
11938 RallypointUdpStreaming::document();
11939 RallypointServer::document();
11940 PlatformDiscoveredService::document();
11941 TimelineQueryParameters::document();
11942 CertStoreCertificate::document();
11943 CertStore::document();
11944 CertStoreCertificateElement::document();
11945 CertStoreDescriptor::document();
11946 CertificateDescriptor::document();
11947 BridgeCreationDetail::document();
11948 GroupConnectionDetail::document();
11949 GroupTxDetail::document();
11950 GroupCreationDetail::document();
11951 GroupReconfigurationDetail::document();
11952 GroupHealthReport::document();
11953 InboundProcessorStats::document();
11954 TrafficCounter::document();
11955 GroupStats::document();
11956 RallypointConnectionDetail::document();
11957 BridgingConfiguration::document();
11958 BridgingServerStatusReportConfiguration::document();
11959 BridgingServerInternals::document();
11960 BridgingServerConfiguration::document();
11961 EarGroupsConfiguration::document();
11962 EarServerStatusReportConfiguration::document();
11963 EarServerInternals::document();
11964 EarServerConfiguration::document();
11965 RangerPackets::document();
11966 TransportImpairment::document();
11968 EngageSemGroupsConfiguration::document();
11969 EngageSemServerStatusReportConfiguration::document();
11970 EngageSemServerInternals::document();
11971 EngageSemServerConfiguration::document();
11976 #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....
int txnTimeoutSecs
[Optional, Default: 0] Number of seconds after which to time out delivery to the target node
PayloadType_t
Payload type. BlobInfo RTP supported Payload types.
std::string txnId
[Optional but required if txnTimeoutSecs is > 0]
Detailed information for a bridge creation.
CreationStatus_t
Creation status.
CreationStatus_t status
The creation status.
std::string id
ID of the bridge.
Bridging session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the bridge
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.
TuningSettings tuning
[Optional] Low-level tuning
WatchdogSettings watchdog
[Optional] Settings for the watchdog.
TODO: Configuration for the bridging server status report file.
bool includeBridgeGroupDetail
Description of a certstore certificate element.
std::string tags
Additional attributes.
bool hasPrivateKey
True if the certificate has a private key associated with it.
std::string certificatePem
PEM of the certificate.
Holds a certificate and (optionally) a private key in a certstore.
std::string tags
Additional tags.
std::string id
Id of the certificate.
std::string certificatePem
Certificate in PEM format.
void * internalData
Unserialized internal data.
std::string privateKeyPem
Private key in PEM format.
Description of a certstore.
std::string id
Certstore ID.
std::vector< CertStoreCertificateElement > certificates
Array of certificate elements.
std::string fileName
Name of the file the certstore resides in.
int flags
Flags set for the certstore.
int version
Version of the certstore.
std::vector< 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.
TuningSettings tuning
[Optional] Low-level tuning
TODO: Configuration for the ear server status report file.
NetworkAddress rx
Internal RX detail.
NetworkAddress tx
Internal TX detail.
std::string id
Internal ID.
Engage Semaphore configuration.
std::vector< Group > groups
Array of groups in the configuration.
Configuration for the EFC server.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
EnginePolicy enginePolicy
The policy to be used for the underlying Engage Engine.
std::string configurationCheckSignalName
Name to use for signalling a configuration check.
EngageSemServerStatusReportConfiguration statusReport
Details for producing a status report.
std::string id
A unqiue identifier for the EFC server.
std::string certStoreFileName
Path to the certificate store.
std::string groupsConfigurationFileName
Name of a file containing the EFC configuration.
int serviceConfigurationFileCheckSecs
Number of seconds between checks to see if the service configuration has been updated....
NsmConfiguration nsm
[Optional] Settings for NSM.
std::string groupsConfigurationFileCommand
Command-line to execute that returns a configuration.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the server's interaction with an external health-checker such as a load-balancer.
EngageSemServerInternals internals
Internal settings.
std::string certStorePasswordHex
Hex password for the certificate store (if any)
int groupsConfigurationFileCheckSecs
Number of seconds between checks to see if the configuration has been updated. Default is 60.
Internal EFC server settings.
WatchdogSettings watchdog
[Optional] Settings for the EFC's watchdog.
TuningSettings tuning
[Optional] Low-level tuning
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
TODO: Configuration for the EFC server status report file.
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 saveOutputPcm
[Optional, Default: false] If true, input audio is written to a PCM file in the data directory
bool enabled
[Optional, Default: true] Enables audio processing
AndroidAudio android
[Optional] Android-specific audio settings
int internalRate
[Optional, Default: 16000] Internal sampling rate - 8000 or 16000
bool muteTxOnTx
[Optional, Default: false] Automatically mute TX when TX begins
Agc inputAgc
[Optional] Automatic Gain Control for audio inputs
bool hardwareEnabled
[Optional, Default: true] Enables local machine hardware audio
Aec aec
[Optional] Acoustic echo cancellation settings
bool denoiseInput
[Optional, Default: false] Denoise input
bool saveInputPcm
[Optional, Default: false] If true, input audio is written to a PCM file in the data directory
bool denoiseOutput
[Optional, Default: false] Denoise output
int internalChannels
[Optional, Default: 2] Internal audio channel count rate - 1 or 2
Provides Engage Engine policy configuration.
std::vector< ExternalModule > externalCodecs
Optional external codecs.
EnginePolicyNamedAudioDevices namedAudioDevices
Optional named audio devices (Linux only)
Featureset featureset
Optional feature set.
EnginePolicyDatabase database
Database settings.
EnginePolicyAudio audio
Audio settings.
std::string dataDirectory
Specifies the root of the physical path to store data.
Licensing licensing
Licensing settings.
EnginePolicyLogging logging
Logging settings.
DiscoveryConfiguration discovery
Discovery settings.
std::vector< RtpMapEntry > rtpMap
Optional RTP - overrides the default.
EngineStatusReportConfiguration statusReport
Optional statusReport - details for the status report.
EnginePolicyInternals internals
Internal settings.
EnginePolicySecurity security
Security settings.
EnginePolicyTimelines timelines
Timelines settings.
EnginePolicyNetworking networking
Security settings.
Internal Engage Engine settings.
TuningSettings tuning
[Optional] Low-level tuning
int stickyTidHangSecs
[Optional, Default: 10] The number of seconds after which "sticky" transmission IDs expire.
int maxTxSecs
[Optional, Default: 30] The default duration the engageBeginGroupTx and engageBeginGroupTxAdvanced fu...
int rpConnectionTimeoutSecs
[Optional, Default: 5] Connection timeout in seconds to RP
WatchdogSettings watchdog
[Optional] Settings for the Engine's watchdog.
RallypointCluster::ConnectionStrategy_t rpClusterStrategy
[Optional, Default: csRoundRobin] Specifies the default RP cluster connection strategy to be followed...
int delayedMicrophoneClosureSecs
[Optional, Default: 15] The number of seconds to cache an open microphone before actually closing it.
int rtpExpirationCheckIntervalMs
[Optional, Default: 250] Interval at which to check for RTP expiration.
int rpClusterRolloverSecs
[Optional, Default: 10] Seconds between switching to a new target in a RP cluster
int housekeeperIntervalMs
[Optional, Default: 1000] Interval at which to run the housekeeper thread.
int uriStreamingIntervalMs
[Optional, Default: 60] The packet framing interval for audio streaming from a URI.
int maxLevel
[Optional, Default: 4, Range: 0-4] This is the maximum logging level to display in other words,...
EngineNetworkingRpUdpStreaming rpUdpStreaming
[Optional] Configuration for UDP streaming
std::string defaultNic
The default network interface card the Engage Engine should bind to.
RtpProfile rtpProfile
[Optional] Configuration for RTP profile
AddressResolutionPolicy_t addressResolutionPolicy
[Optional, Default 64] Address resolution policy
int multicastRejoinSecs
[Optional, Default: 8] Number of seconds elapsed between RX of multicast packets before an IGMP rejoi...
bool logRtpJitterBufferStats
[Optional, Default: false] If true, logs RTP jitter buffer statistics periodically
int rallypointRtTestIntervalMs
[Optional, Default: 60000] Milliseconds between sending Rallypoint round-trip test requests
bool preventMulticastFailover
[Optional, Default: false] Overrides/cancels group-level multicast failover if set to true
Default certificate to use for security operation in the Engage Engine.
SecurityCertificate certificate
The default certificate and private key for the Engine instance.
std::vector< std::string > caCertificates
[Optional] An array of CA certificates to be used for validation of far-end X.509 certificates
Engine Policy Timeline configuration.
long autosaveIntervalSecs
[Default 5] Interval at which events are to be saved from memory to disk (a slow operation)
int maxStorageMb
Specifies the maximum storage space to use.
bool enabled
[Optional, Default: true] Specifies if Time Lines are enabled by default.
int maxDiskMb
Specifies the maximum disk space to use - defaults to maxStorageMb.
SecurityCertificate security
The certificate to use for signing the recording.
int maxAudioEventMemMb
Specifies the maximum number of megabytes to allow for a single audio event's memory block - defaults...
long maxEventAgeSecs
Maximum age of an event after which it is to be erased.
int maxMemMb
Specifies the maximum memory to use - defaults to maxStorageMb.
std::string storageRoot
Specifies where the timeline recordings will be stored physically.
bool ephemeral
[Default false] If true, recordings are automatically purged when the Engine is shut down and/or rein...
bool disableSigningAndVerification
[Default false] If true, prevents signing of events - i.e. no anti-tanpering features will be availab...
int maxEvents
Maximum number of events to be retained.
long groomingIntervalSecs
Interval at which events are to be checked for age-based grooming.
TODO: Configuration for the translation server status report file.
bool includeTaskQueueDetail
Describes an external codec.
int samplingRate
Sampling rate.
int rtpPayloadType
RTP payload type.
int rtpTsMultiplier
RTP timestamp multiplier.
TODO: Configuration to enable external systems to use to check if the service is still running.
Base for a description of an external module.
std::string file
File spec.
nlohmann::json configuration
Optional free-form JSON configuration to be passed to the module.
bool debug
[Optional, Default false] If true, requests the crypto engine module to run in debugging mode.
bool enabled
[Optional, Default false] If true, requires FIPS140-2 crypto operation.
std::string 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.
TuningSettings tuning
[Optional] Low-level tuning
TODO: Configuration for the translation server status report file.
bool includeSessionGroupDetail
bool includeSessionDetail
Location information used as part of the PresenceDescriptor.
double longitude
Its the longitudinal position using the Signed degrees format (DDD.dddd) format. Valid range is -180 ...
double altitude
[Optional, Default: INVALID_LOCATION_VALUE] The altitude above sea level in meters.
uint32_t ts
[Read Only: Unix timestamp - Zulu/UTC] Indicates the timestamp that the location was recorded.
double latitude
Its the latitude position using the using the Signed degrees format (DDD.dddd). Valid range is -90 to...
double direction
[Optional, Default: INVALID_LOCATION_VALUE] Direction the endpoint is traveling in degrees....
double speed
[Optional, Default: INVALID_LOCATION_VALUE] The speed the endpoint is traveling at in meters per seco...
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
int port
[Default: RP port] The multicast network interface for mDNS
bool enabled
[Default: false] Advertising is enabled
int ttl
[Default: 60] TTL for service TTL
int rolloverSecs
Seconds between switching to a new target.
ConnectionStrategy_t
Connection strategy enum.
int 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
[Optional] Vector of additional TX addresses .
NetworkAddress tx
The network address for transmitting network traffic to.
DirectionRestriction_t directionRestriction
[Optional] Restriction of direction of traffic flow
DirectionRestriction_t
Enum describing direction(s) for the reflector.
std::string multicastInterfaceName
[Optional] The name of the NIC on which to send and receive multicast traffic.
Defines a behavior for a Rallypoint peer roundtrip time.
BehaviorType_t
Enum describing behavior types.
@ btReportWarn
Report at level warning.
@ btReportError
Report at level error.
@ btReportInfo
Report at level info.
BehaviorType_t behavior
Specifies the streaming mode type (see BehaviorType_t).
uint32_t atOrAboveMs
Network address for listening.
Configuration for the Rallypoint server.
uint32_t maxSecurityLevel
[Optional, Default 0] Sets the maximum item security level that can be registered with the RP
bool forwardDiscoveredGroups
Enables automatic forwarding of discovered multicast traffic to peer Rallypoints.
std::string interfaceName
Name of the NIC to bind to for listening for incoming TCP connections.
NetworkTxOptions multicastTxOptions
Tx options for multicast.
bool disableMessageSigning
Set to true to forgo DSA signing of messages. Doing so is is a security risk but can be useful on CPU...
SecurityCertificate certificate
X.509 certificate and private key that identifies the Rallypoint.
std::string multicastInterfaceName
The name of the NIC on which to send and receive multicast traffic.
StringRestrictionList groupRestrictions
Group IDs to be restricted (inclusive or exclusive)
std::string peeringConfigurationFileName
Name of a file containing a JSON array of Rallypoint peers to connect to.
uint32_t sysFlags
[Optional, Default 0] Internal system flags
int listenPort
TCP port to listen on. Default is 7443.
FipsCryptoSettings fipsCrypto
[Optional] Settings for the FIPS crypto.
NetworkAddressRestrictionList multicastRestrictions
Multicasts to be restricted (inclusive or exclusive)
uint32_t normalTaskQueueBias
[Optional, Default 0] Sets the queue's normal task bias
PacketCapturer txCapture
Details for capture of transmitted packets
std::vector< RallypointReflector > staticReflectors
Vector of static groups.
bool enableLeafReflectionReverseSubscription
If enabled, causes a 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
std::string meshName
[Optional] This Rallypoint's mesh name
uint32_t maxOutboundPeerConnectionIntervalDeltaSecs
[Optional, Default 15] Sets the delta value for the maximum number of seconds to delay when attemptin...
TuningSettings tuning
[Optional] Low-level tuning
RallypointAdvertisingSettings advertising
[Optional] Settings for advertising.
Featureset featureset
Optional feature set.
ExternalHealthCheckResponder externalHealthCheckResponder
Details concerning the Rallypoint's interaction with an external health-checker such as a load-balanc...
std::vector< RallypointExtendedGroupRestriction > extendedGroupRestrictions
Extended group restrictions.
int ioPools
Number of threading pools to create for network I/O. Default is -1 which creates 1 I/O pool per CPU c...
RallypointServerStatusReportConfiguration statusReport
Details for producing a status report.
IgmpSnooping igmpSnooping
IGMP snooping configuration.
RallypointServerLinkGraph linkGraph
Details for producing a Graphviz-compatible link graph.
RallypointServerLimits limits
Details for capacity limits and determining processing load.
PeeringConfiguration peeringConfiguration
Internal - not serialized.
std::vector< std::string > extraMeshes
[Optional] List of additional meshes that can be reached via this RP
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.
uint32_t maxActiveBlobObjects
[Optional, Default 0 (no max)] Maximum number of blob objects allowed to be active
uint32_t maxActiveRtpProcessors
[Optional, Default 0 (no max)] Maximum number concurrent RTP processors
uint32_t maxPooledBufferMb
[Optional, Default 0 (no max)] Maximum number of buffer bytes allowed to be pooled
uint32_t maxActiveBufferObjects
[Optional, Default 0 (no max)] Maximum number of buffer objects allowed to be active
uint32_t maxPooledBufferObjects
[Optional, Default 0 (no max)] Maximum number of buffer objects allowed to be pooled
uint32_t maxPooledRtpObjects
[Optional, Default 0 (no max)] Maximum number of RTP objects allowed to be pooled
uint32_t maxPooledBlobMb
[Optional, Default 0 (no max)] Maximum number of blob bytes allowed to be pooled
uint32_t maxPooledRtpMb
[Optional, Default 0 (no max)] Maximum number of RTP bytes allowed to be pooled
uint32_t maxActiveRtpObjects
[Optional, Default 0 (no max)] Maximum number of RTP objects allowed to be active
uint32_t maxPooledBlobObjects
[Optional, Default 0 (no max)] Maximum number of blob objects allowed to be pooled
Configuration for the audio transmit properties for a group.
int startTxNotifications
[Optional, Default: 5] Number of start TX notifications to send when TX is about to begin.
int framingMs
[Optional, Default: 60] Audio sample framing size in milliseconds.
int maxTxSecs
[Optional, Default: 0] Maximum number of seconds the Engine will transmit for.
uint32_t internalKey
[INTERNAL] The Engine-assigned key for the codec
bool enabled
[Optional, Default: true] Audio transmission is enabled
bool fdx
[Optional, Default: false] Indicates if full duplex audio is supported.
int initialHeaderBurst
[Optional, Default: 5] Number of headers to send at the beginning of a talk burst.
bool resetRtpOnTx
[Optional, Default: true] Resets RTP counters on each new transmission.
bool dtx
[Optional, Default: false] Support discontinuous transmission on those CODECs that allow it
std::string encoderName
[Optional] The name of the external codec - overrides encoder
TxCodec_t encoder
[Optional, Default: ctOpus8000] Specifies the Codec Type to use for the transmission....
int blockCount
[Optional, Default: 0] If >0, derives framingMs based on the encoder's internal operation
int smoothedHangTimeMs
[Optional, Default: 0] Hang timer for ongoing TX - only applicable if enableSmoothing is true
int customRtpPayloadType
[Optional, Default: -1] The custom RTP payload type to use for transmission. A value of -1 causes the...
bool noHdrExt
[Optional, Default: false] Set to true whether to disable header extensions.
bool enableSmoothing
[Optional, Default: true] Smooth input audio
int trailingHeaderBurst
[Optional, Default: 5] Number of headers to send at the conclusion of a talk burst.
int extensionSendInterval
[Optional, Default: 10] The number of packets when to periodically send the header extension.
TxCodec_t
Codec Types enum.
Optional audio streaming from a URI for engageBeginGroupTxAdvanced.
std::string uri
URI for the file.
int repeatCount
[Optional, Default: 0] Number of times to repeat
Voice Activity Detection settings.
bool enabled
[Optional, Default: false] Enable VAD
Mode_t mode
[Optional, Default: vamDefault] Specifies VAD mode. See Mode_t for all modes
Voice to voice session settings.
std::vector< std::string > groups
List of group IDs to be included in the session.
bool enabled
[Optional, Default: true] Enable the session
int intervalMs
[Optional, Default: 5000] Interval at which checks are made.
int hangDetectionMs
[Optional, Default: 2000] Number of milliseconds that must pass before a hang is assumed.
int slowExecutionThresholdMs
[Optional, Default: 100] Maximum number of milliseconds that a task may take before being considered ...
bool abortOnHang
[Optional, Default: true] If true, aborts the process if a hang is detected.
bool enabled
[Optional, Default: true] Enables/disables a watchdog.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * OID_RTS_PEM
Rally Tactical Systems' PEN as assigned by IANA.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * OID_RTS_CERT_SUBJ_ACCESS_TAGS
The link to the Rallypoint is down.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_SERIAL
The Rallypoint denied the registration request because the far-end's certificate serial number has be...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_SECURITY_CLASSIFICATION_LEVEL_TOO_HIGH
The Rallypoint has denied the registration because the registration is for a security level not allow...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_ON_BLACKLIST
The Rallypoint denied the registration request because the far-end does appears in blackist criteria.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_FINGERPRINT
The Rallypoint denied the registration request because the far-end's certificate fingerprint has been...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_ISSUER
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_GENERAL_DENIAL
The Rallypoint has denied the registration for no specific reason.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_ACCESS_TAG
The Rallypoint denied the registration request because the far-end's certificate does not have an acc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_SUBJECT
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NOT_ALLOWED
The Rallypoint is not accepting registration for the group at this time.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_SUBJECT
The Rallypoint denied the registration request because the far-end's certificate subject has been exc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_LINK
The link to the Rallypoint is down.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_SERIAL
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_FINGERPRINT
The Rallypoint denied the registration request because the far-end's certificate does not have an an ...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_ISSUER
The Rallypoint denied the registration request because the far-end's certificate issuer has been excl...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_EXCLUDED_ACCESS_TAG
The Rallypoint denied the registration request because the far-end's certificate does not have an acc...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_UNREGISTERED
The group has been gracefully unregistered from the Rallypoint.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NO_REAON
No particular reason was provided.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_DISCONNECTED_REASON_NOT_ON_WHITELIST
The Rallypoint denied the registration request because the far-end does not appear in any whitelist c...
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_DOMO
The source is Domo Tactical via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_CISTECH
The source is CISTECH via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_CORE
The source is a Magellan-capable entity.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_INTERNAL
Internal to Engage.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_TAIT
The source is Tait via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_TRELLISWARE
The source is Trellisware via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_SILVUS
The source is Silvus via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_VOCALITY
The source is Vocality via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_PERSISTENT
The source is Persistent Systems via Magellan discovery.
static ENGAGE_IGNORE_COMPILER_UNUSED_WARNING const char * GROUP_SOURCE_ENGAGE_MAGELLAN_KENWOOD
The source is Kenwood via Magellan discovery.
static const uint8_t ENGAGE_DEFAULT_BLOB_RTP_PAYLOAD_TYPE
The default RTP payload type Engage uses for RTP blob messaging.