engage-engine 1.230.90700001 → 1.232.90720001

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/engage.cpp CHANGED
@@ -575,9 +575,11 @@ NAN_METHOD(on)
575
575
  //--------------------------------------------------------
576
576
  NAN_METHOD(initialize)
577
577
  {
578
+ /*
578
579
  #if defined(WIN32)
579
580
  engageWin32LibraryInit();
580
581
  #endif
582
+ */
581
583
 
582
584
  memset(&g_eventCallbacks, 0, sizeof(g_eventCallbacks));
583
585
 
@@ -707,9 +709,11 @@ NAN_METHOD(shutdown)
707
709
  {
708
710
  NANRETI(engageShutdown());
709
711
 
712
+ /*
710
713
  #if defined(WIN32)
711
714
  engageWin32LibraryDeinit();
712
715
  #endif
716
+ */
713
717
  }
714
718
 
715
719
  //--------------------------------------------------------
@@ -1137,6 +1141,12 @@ NAN_METHOD(isCryptoFipsValidated)
1137
1141
  NANRETI(engageIsCryptoFipsValidated());
1138
1142
  }
1139
1143
 
1144
+ //--------------------------------------------------------
1145
+ NAN_METHOD(setCertStore)
1146
+ {
1147
+ NANRETI(engageSetCertStore((uint8_t*) node::Buffer::Data(info[0]), INTVAL(1), STRVAL(2)));
1148
+ }
1149
+
1140
1150
  //--------------------------------------------------------
1141
1151
  NAN_MODULE_INIT(Init)
1142
1152
  {
@@ -1189,6 +1199,7 @@ NAN_MODULE_INIT(Init)
1189
1199
 
1190
1200
  ENGAGE_BINDING(openCertStore);
1191
1201
  ENGAGE_BINDING(closeCertStore);
1202
+ ENGAGE_BINDING(setCertStore);
1192
1203
  ENGAGE_BINDING(setCertStoreCertificatePem);
1193
1204
  ENGAGE_BINDING(setCertStoreCertificateP12);
1194
1205
  ENGAGE_BINDING(deleteCertStoreCertificate);
@@ -2510,7 +2510,7 @@ namespace AppConfigurationObjects
2510
2510
  {
2511
2511
  char buff[2048];
2512
2512
 
2513
- sprintf_s(buff, sizeof(buff), "deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
2513
+ snprintf(buff, sizeof(buff), "deviceId=%d, name=%s, manufacturer=%s, model=%s, hardwareId=%s, serialNumber=%s, type=%s, extra=%s",
2514
2514
  deviceId,
2515
2515
  name.c_str(),
2516
2516
  manufacturer.c_str(),
@@ -3034,7 +3034,7 @@ namespace AppConfigurationObjects
3034
3034
  {
3035
3035
  char buff[2048];
3036
3036
 
3037
- sprintf_s(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",
3037
+ 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",
3038
3038
  deviceId,
3039
3039
  samplingRate,
3040
3040
  channels,
@@ -4031,6 +4031,70 @@ namespace AppConfigurationObjects
4031
4031
  getOptional<int>("count", p.count, j, 5);
4032
4032
  }
4033
4033
 
4034
+ //-----------------------------------------------------------
4035
+ JSON_SERIALIZED_CLASS(Source)
4036
+ /**
4037
+ * @brief Options for Source
4038
+ *
4039
+ * Helper C++ class to serialize and de-serialize Source JSON
4040
+ *
4041
+ * TODO: Complete this Class
4042
+ *
4043
+ * Example: @include[doc] examples/Source.json
4044
+ *
4045
+ * @see Group
4046
+ */
4047
+ class Source : public ConfigurationObjectBase
4048
+ {
4049
+ IMPLEMENT_JSON_SERIALIZATION()
4050
+ IMPLEMENT_JSON_DOCUMENTATION(Source)
4051
+
4052
+ public:
4053
+ /** @brief [Optional] A node ID */
4054
+ std::string nodeId;
4055
+
4056
+ /* NOTE: Not serialized ! */
4057
+ uint8_t _internal_binary_nodeId[MAX_NODE_ID_SIZE];
4058
+
4059
+ /** @brief [Optional] An alias */
4060
+ std::string alias;
4061
+
4062
+ /* NOTE: Not serialized ! */
4063
+ uint8_t _internal_binary_alias[MAX_ALIAS_SIZE];
4064
+
4065
+ Source()
4066
+ {
4067
+ clear();
4068
+ }
4069
+
4070
+ void clear()
4071
+ {
4072
+ nodeId.clear();
4073
+ memset(_internal_binary_nodeId, 0, sizeof(_internal_binary_nodeId));
4074
+
4075
+ alias.clear();
4076
+ memset(_internal_binary_alias, 0, sizeof(_internal_binary_alias));
4077
+ }
4078
+
4079
+ virtual void initForDocumenting()
4080
+ {
4081
+ }
4082
+ };
4083
+
4084
+ static void to_json(nlohmann::json& j, const Source& p)
4085
+ {
4086
+ j = nlohmann::json{
4087
+ TOJSON_IMPL(nodeId),
4088
+ TOJSON_IMPL(alias)
4089
+ };
4090
+ }
4091
+ static void from_json(const nlohmann::json& j, Source& p)
4092
+ {
4093
+ p.clear();
4094
+ FROMJSON_IMPL_SIMPLE(nodeId);
4095
+ FROMJSON_IMPL_SIMPLE(alias);
4096
+ }
4097
+
4034
4098
  //-----------------------------------------------------------
4035
4099
  JSON_SERIALIZED_CLASS(Group)
4036
4100
  /**
@@ -4076,7 +4140,10 @@ namespace AppConfigurationObjects
4076
4140
  bomPayloadTransformation = 1,
4077
4141
 
4078
4142
  /** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s) allow header extensions */
4079
- bomAnonymousMixing = 2
4143
+ bomAnonymousMixing = 2,
4144
+
4145
+ /** @brief The bridge performs language translations between groups */
4146
+ bomLanguageTranslation = 3
4080
4147
  } BridgingOpMode_t;
4081
4148
 
4082
4149
  /** @brief Specifies the group type (see @ref Type_t). */
@@ -4096,6 +4163,9 @@ namespace AppConfigurationObjects
4096
4163
  /** @brief The human readable name for the group. */
4097
4164
  std::string name;
4098
4165
 
4166
+ /** @brief The group name as spoken - typically by a text-to-speech system */
4167
+ std::string spokenName;
4168
+
4099
4169
  /** @brief The name of the network interface to use for multicasting for this group. If not provided, the Engine's default multicast NIC is used. */
4100
4170
  std::string interfaceName;
4101
4171
 
@@ -4220,6 +4290,13 @@ namespace AppConfigurationObjects
4220
4290
  /** @brief [Optional, Default: 0] The security classification level of the group. */
4221
4291
  uint32_t securityLevel;
4222
4292
 
4293
+ /** @brief [Optional] List of sources to ignore for this group */
4294
+ std::vector<Source> ignoreSources;
4295
+
4296
+ /** @brief ISO 639-2 lanuguage code for the group */
4297
+ std::string languageCode;
4298
+
4299
+
4223
4300
  Group()
4224
4301
  {
4225
4302
  clear();
@@ -4231,6 +4308,7 @@ namespace AppConfigurationObjects
4231
4308
  bom = bomRaw;
4232
4309
  id.clear();
4233
4310
  name.clear();
4311
+ spokenName.clear();
4234
4312
  interfaceName.clear();
4235
4313
  rx.clear();
4236
4314
  tx.clear();
@@ -4287,6 +4365,10 @@ namespace AppConfigurationObjects
4287
4365
  specializerAffinities.clear();
4288
4366
 
4289
4367
  securityLevel = 0;
4368
+
4369
+ ignoreSources.clear();
4370
+
4371
+ languageCode.clear();
4290
4372
  }
4291
4373
  };
4292
4374
 
@@ -4297,6 +4379,7 @@ namespace AppConfigurationObjects
4297
4379
  TOJSON_IMPL(bom),
4298
4380
  TOJSON_IMPL(id),
4299
4381
  TOJSON_IMPL(name),
4382
+ TOJSON_IMPL(spokenName),
4300
4383
  TOJSON_IMPL(interfaceName),
4301
4384
  TOJSON_IMPL(rx),
4302
4385
  TOJSON_IMPL(tx),
@@ -4339,7 +4422,11 @@ namespace AppConfigurationObjects
4339
4422
 
4340
4423
  TOJSON_IMPL(specializerAffinities),
4341
4424
 
4342
- TOJSON_IMPL(securityLevel)
4425
+ TOJSON_IMPL(securityLevel),
4426
+
4427
+ TOJSON_IMPL(ignoreSources),
4428
+
4429
+ TOJSON_IMPL(languageCode)
4343
4430
  };
4344
4431
 
4345
4432
  // TODO: need a better way to indicate whether rtpProfile is present
@@ -4373,6 +4460,7 @@ namespace AppConfigurationObjects
4373
4460
  getOptional<Group::BridgingOpMode_t>("bom", p.bom, j, Group::BridgingOpMode_t::bomRaw);
4374
4461
  j.at("id").get_to(p.id);
4375
4462
  getOptional<std::string>("name", p.name, j);
4463
+ getOptional<std::string>("spokenName", p.spokenName, j);
4376
4464
  getOptional<std::string>("interfaceName", p.interfaceName, j);
4377
4465
  getOptional<NetworkAddress>("rx", p.rx, j);
4378
4466
  getOptional<NetworkAddress>("tx", p.tx, j);
@@ -4410,6 +4498,8 @@ namespace AppConfigurationObjects
4410
4498
  getOptional<TransportImpairment>("rxImpairment", p.rxImpairment, j);
4411
4499
  getOptional<std::vector<uint16_t>>("specializerAffinities", p.specializerAffinities, j);
4412
4500
  getOptional<uint32_t>("securityLevel", p.securityLevel, j, 0);
4501
+ getOptional<std::vector<Source>>("ignoreSources", p.ignoreSources, j);
4502
+ getOptional<std::string>("languageCode", p.languageCode, j);
4413
4503
  }
4414
4504
 
4415
4505
 
@@ -4651,9 +4741,6 @@ namespace AppConfigurationObjects
4651
4741
  /** @brief [Optional, false] Enables UDP streaming if the RP supports it */
4652
4742
  bool enabled;
4653
4743
 
4654
- /** @brief [Optional, false] Allows for clear-packet streaming */
4655
- bool allowClear;
4656
-
4657
4744
  /** @brief [Optional, EnginePolicyNetworking::defaultNic] Name of NIC to bind to - uses Engine defaultNic if empty */
4658
4745
  std::string nic;
4659
4746
 
@@ -4677,7 +4764,6 @@ namespace AppConfigurationObjects
4677
4764
  void clear()
4678
4765
  {
4679
4766
  enabled = false;
4680
- allowClear = false;
4681
4767
  nic.clear();
4682
4768
  keepAliveIntervalSecs = 10;
4683
4769
  priority = NetworkTxOptions::priVoice;
@@ -4693,7 +4779,6 @@ namespace AppConfigurationObjects
4693
4779
  {
4694
4780
  j = nlohmann::json{
4695
4781
  TOJSON_IMPL(enabled),
4696
- TOJSON_IMPL(allowClear),
4697
4782
  TOJSON_IMPL(nic),
4698
4783
  TOJSON_IMPL(port),
4699
4784
  TOJSON_IMPL(keepAliveIntervalSecs),
@@ -4705,7 +4790,6 @@ namespace AppConfigurationObjects
4705
4790
  {
4706
4791
  p.clear();
4707
4792
  getOptional<bool>("enabled", p.enabled, j, false);
4708
- getOptional<bool>("allowClear", p.allowClear, j, false);
4709
4793
  getOptional<std::string>("nic", p.nic, j, EMPTY_STRING);
4710
4794
  getOptional<int>("port", p.port, j, 0);
4711
4795
  getOptional<int>("keepAliveIntervalSecs", p.keepAliveIntervalSecs, j, 10);
@@ -6493,12 +6577,6 @@ namespace AppConfigurationObjects
6493
6577
  /** @brief Database settings */
6494
6578
  EnginePolicyDatabase database;
6495
6579
 
6496
- /** @brief Path to the certificate store */
6497
- std::string certStoreFileName;
6498
-
6499
- /** @brief Hex password for the certificate store (if any) */
6500
- std::string certStorePasswordHex;
6501
-
6502
6580
  /** @brief Optional feature set */
6503
6581
  Featureset featureset;
6504
6582
 
@@ -6528,8 +6606,6 @@ namespace AppConfigurationObjects
6528
6606
  internals.clear();
6529
6607
  timelines.clear();
6530
6608
  database.clear();
6531
- certStoreFileName.clear();
6532
- certStorePasswordHex.clear();
6533
6609
  featureset.clear();
6534
6610
  namedAudioDevices.clear();
6535
6611
  externalCodecs.clear();
@@ -6550,8 +6626,6 @@ namespace AppConfigurationObjects
6550
6626
  TOJSON_IMPL(internals),
6551
6627
  TOJSON_IMPL(timelines),
6552
6628
  TOJSON_IMPL(database),
6553
- TOJSON_IMPL(certStoreFileName),
6554
- TOJSON_IMPL(certStorePasswordHex),
6555
6629
  TOJSON_IMPL(featureset),
6556
6630
  TOJSON_IMPL(namedAudioDevices),
6557
6631
  TOJSON_IMPL(externalCodecs),
@@ -6571,8 +6645,6 @@ namespace AppConfigurationObjects
6571
6645
  FROMJSON_IMPL_SIMPLE(internals);
6572
6646
  FROMJSON_IMPL_SIMPLE(timelines);
6573
6647
  FROMJSON_IMPL_SIMPLE(database);
6574
- FROMJSON_IMPL_SIMPLE(certStoreFileName);
6575
- FROMJSON_IMPL_SIMPLE(certStorePasswordHex);
6576
6648
  FROMJSON_IMPL_SIMPLE(featureset);
6577
6649
  FROMJSON_IMPL_SIMPLE(namedAudioDevices);
6578
6650
  FROMJSON_IMPL_SIMPLE(externalCodecs);
@@ -7046,6 +7118,59 @@ namespace AppConfigurationObjects
7046
7118
  getOptional<std::string>("runCmd", p.runCmd, j);
7047
7119
  }
7048
7120
 
7121
+
7122
+ //-----------------------------------------------------------
7123
+ JSON_SERIALIZED_CLASS(RallypointServerRouteMap)
7124
+ class RallypointServerRouteMap : public ConfigurationObjectBase
7125
+ {
7126
+ IMPLEMENT_JSON_SERIALIZATION()
7127
+ IMPLEMENT_JSON_DOCUMENTATION(RallypointServerRouteMap)
7128
+
7129
+ public:
7130
+ /** File name to use for the route map report. */
7131
+ std::string fileName;
7132
+
7133
+ /** [Optional, Default: 5] Minimum update time for updates. */
7134
+ int minRefreshSecs;
7135
+
7136
+ /** [Optional, Default: false] Indicates if reporting is enabled. */
7137
+ bool enabled;
7138
+
7139
+ /** [Optional, Default: null] Command to be executed every time the report is produced. */
7140
+ std::string runCmd;
7141
+
7142
+ RallypointServerRouteMap()
7143
+ {
7144
+ clear();
7145
+ }
7146
+
7147
+ void clear()
7148
+ {
7149
+ fileName.clear();
7150
+ minRefreshSecs = 5;
7151
+ enabled = false;
7152
+ }
7153
+ };
7154
+
7155
+ static void to_json(nlohmann::json& j, const RallypointServerRouteMap& p)
7156
+ {
7157
+ j = nlohmann::json{
7158
+ TOJSON_IMPL(fileName),
7159
+ TOJSON_IMPL(minRefreshSecs),
7160
+ TOJSON_IMPL(enabled),
7161
+ TOJSON_IMPL(runCmd)
7162
+ };
7163
+ }
7164
+ static void from_json(const nlohmann::json& j, RallypointServerRouteMap& p)
7165
+ {
7166
+ p.clear();
7167
+ getOptional<std::string>("fileName", p.fileName, j);
7168
+ getOptional<int>("minRefreshSecs", p.minRefreshSecs, j, 5);
7169
+ getOptional<bool>("enabled", p.enabled, j, false);
7170
+ getOptional<std::string>("runCmd", p.runCmd, j);
7171
+ }
7172
+
7173
+
7049
7174
  //-----------------------------------------------------------
7050
7175
  JSON_SERIALIZED_CLASS(ExternalHealthCheckResponder)
7051
7176
  /**
@@ -7298,14 +7423,8 @@ namespace AppConfigurationObjects
7298
7423
  /** @brief Unknown */
7299
7424
  etUnknown,
7300
7425
 
7301
- /** @brief No encryption */
7302
- etClear,
7303
-
7304
7426
  /** @brief Shared-key encryption */
7305
- etSharedKey,
7306
-
7307
- /** @brief DTLS encryption*/
7308
- etDtls
7427
+ etSharedKey
7309
7428
  } EnvelopeType_t;
7310
7429
 
7311
7430
  /** @brief Specifies the streaming mode type (see @ref EnvelopeType_t). */
@@ -7346,6 +7465,77 @@ namespace AppConfigurationObjects
7346
7465
  j.at("external").get_to(p.external);
7347
7466
  }
7348
7467
 
7468
+ //-----------------------------------------------------------
7469
+ JSON_SERIALIZED_CLASS(RallypointRpRtTimingBehavior)
7470
+ /**
7471
+ * @brief Defines a behavior for a Rallypoint peer roundtrip time
7472
+ *
7473
+ * Example: @include[doc] examples/RallypointRpRtTimingBehavior.json
7474
+ *
7475
+ */
7476
+ class RallypointRpRtTimingBehavior : public ConfigurationObjectBase
7477
+ {
7478
+ IMPLEMENT_JSON_SERIALIZATION()
7479
+ IMPLEMENT_JSON_DOCUMENTATION(RallypointRpRtTimingBehavior)
7480
+
7481
+ public:
7482
+ /** @brief Enum describing behavior types. */
7483
+ typedef enum
7484
+ {
7485
+ /** @brief Unknown */
7486
+ btNone,
7487
+
7488
+ /** @brief Report at level info */
7489
+ btReportInfo,
7490
+
7491
+ /** @brief Report at level warning */
7492
+ btReportWarn,
7493
+
7494
+ /** @brief Report at level error */
7495
+ btReportError,
7496
+
7497
+ /** @brief Report at level fatal and drop connection */
7498
+ btDrop = 99
7499
+ } BehaviorType_t;
7500
+
7501
+ /** @brief Specifies the streaming mode type (see @ref BehaviorType_t). */
7502
+ BehaviorType_t behavior;
7503
+
7504
+ /** @brief Network address for listening */
7505
+ uint32_t atOrAboveMs;
7506
+
7507
+ /** [Optional, Default: null] Command to be executed. */
7508
+ std::string runCmd;
7509
+
7510
+ RallypointRpRtTimingBehavior()
7511
+ {
7512
+ clear();
7513
+ }
7514
+
7515
+ void clear()
7516
+ {
7517
+ behavior = btNone;
7518
+ atOrAboveMs = 0;
7519
+ runCmd.clear();
7520
+ }
7521
+ };
7522
+
7523
+ static void to_json(nlohmann::json& j, const RallypointRpRtTimingBehavior& p)
7524
+ {
7525
+ j = nlohmann::json{
7526
+ TOJSON_IMPL(behavior),
7527
+ TOJSON_IMPL(atOrAboveMs),
7528
+ TOJSON_IMPL(runCmd)
7529
+ };
7530
+ }
7531
+ static void from_json(const nlohmann::json& j, RallypointRpRtTimingBehavior& p)
7532
+ {
7533
+ p.clear();
7534
+ getOptional<RallypointRpRtTimingBehavior::BehaviorType_t>("behavior", p.behavior, j, RallypointRpRtTimingBehavior::BehaviorType_t::btNone);
7535
+ getOptional<uint32_t>("atOrAboveMs", p.atOrAboveMs, j, 0);
7536
+ getOptional<std::string>("runCmd", p.runCmd, j);
7537
+ }
7538
+
7349
7539
  //-----------------------------------------------------------
7350
7540
  JSON_SERIALIZED_CLASS(RallypointServer)
7351
7541
  /**
@@ -7485,6 +7675,18 @@ namespace AppConfigurationObjects
7485
7675
  /** @brief [Optional, Default 0] Sets the maximum item security level that can be registered with the RP */
7486
7676
  uint32_t maxSecurityLevel;
7487
7677
 
7678
+ /** @brief Details for producing a report containing the route map. @see RallypointServerRouteMap */
7679
+ RallypointServerRouteMap routeMap;
7680
+
7681
+ /** @brief [Optional, Default 15] Sets the delta value for the maximum number of seconds to delay when attempting outbound peer connections */
7682
+ uint32_t maxOutboundPeerConnectionIntervalDeltaSecs;
7683
+
7684
+ /** @brief [Optional, Default: 60000] Milliseconds between sending round-trip test requests to peers */
7685
+ int peerRtTestIntervalMs;
7686
+
7687
+ /** @brief [Optional] Array of behaviors for roundtrip times to peers */
7688
+ std::vector<RallypointRpRtTimingBehavior> peerRtBehaviors;
7689
+
7488
7690
  RallypointServer()
7489
7691
  {
7490
7692
  clear();
@@ -7533,6 +7735,10 @@ namespace AppConfigurationObjects
7533
7735
  enableLeafReflectionReverseSubscription = false;
7534
7736
  disableLoopDetection = false;
7535
7737
  maxSecurityLevel = 0;
7738
+ routeMap.clear();
7739
+ maxOutboundPeerConnectionIntervalDeltaSecs = 15;
7740
+ peerRtTestIntervalMs = 60000;
7741
+ peerRtBehaviors.clear();
7536
7742
  }
7537
7743
  };
7538
7744
 
@@ -7579,7 +7785,11 @@ namespace AppConfigurationObjects
7579
7785
  TOJSON_IMPL(normalTaskQueueBias),
7580
7786
  TOJSON_IMPL(enableLeafReflectionReverseSubscription),
7581
7787
  TOJSON_IMPL(disableLoopDetection),
7582
- TOJSON_IMPL(maxSecurityLevel)
7788
+ TOJSON_IMPL(maxSecurityLevel),
7789
+ TOJSON_IMPL(routeMap),
7790
+ TOJSON_IMPL(maxOutboundPeerConnectionIntervalDeltaSecs),
7791
+ TOJSON_IMPL(peerRtTestIntervalMs),
7792
+ TOJSON_IMPL(peerRtBehaviors)
7583
7793
  };
7584
7794
  }
7585
7795
  static void from_json(const nlohmann::json& j, RallypointServer& p)
@@ -7626,9 +7836,12 @@ namespace AppConfigurationObjects
7626
7836
  getOptional<bool>("enableLeafReflectionReverseSubscription", p.enableLeafReflectionReverseSubscription, j, false);
7627
7837
  getOptional<bool>("disableLoopDetection", p.disableLoopDetection, j, false);
7628
7838
  getOptional<uint32_t>("maxSecurityLevel", p.maxSecurityLevel, j, 0);
7839
+ getOptional<RallypointServerRouteMap>("routeMap", p.routeMap, j);
7840
+ getOptional<uint32_t>("maxOutboundPeerConnectionIntervalDeltaSecs", p.maxOutboundPeerConnectionIntervalDeltaSecs, j, 15);
7841
+ getOptional<int>("peerRtTestIntervalMs", p.peerRtTestIntervalMs, j, 60000);
7842
+ getOptional<std::vector<RallypointRpRtTimingBehavior>>("peerRtBehaviors", p.peerRtBehaviors, j);
7629
7843
  }
7630
7844
 
7631
-
7632
7845
  //-----------------------------------------------------------
7633
7846
  JSON_SERIALIZED_CLASS(PlatformDiscoveredService)
7634
7847
  /**
@@ -9147,7 +9360,10 @@ namespace AppConfigurationObjects
9147
9360
  omPayloadTransformation = 1,
9148
9361
 
9149
9362
  /** @brief Audio payloads are mixed - output is anonymous (i.e. no metadata) if if the target group(s) allow header extensions */
9150
- omAnonymousMixing = 2
9363
+ omAnonymousMixing = 2,
9364
+
9365
+ /** @brief Audio payloads are translated between group-specific languages */
9366
+ omLanguageTranslation = 3
9151
9367
  } OpMode_t;
9152
9368
 
9153
9369
  /** @brief A unqiue identifier for the bridge server */
@@ -1564,7 +1564,7 @@ ENGAGE_API const char * _Nonnull engageGetActiveFeatureset();
1564
1564
  * @brief [SYNC] Enable FIPS crypto
1565
1565
  *
1566
1566
  * @param jsonParams A JSON object of type @ref ConfigurationObjects::FipsCryptoSettings
1567
- * @return ENGAGE_RESULT_OK on sucess, other values on failure
1567
+ * @return ENGAGE_RESULT_OK on success, other values on failure
1568
1568
  */
1569
1569
  ENGAGE_API int engageSetFipsCrypto(const char * _Nonnull jsonParams);
1570
1570
 
@@ -1577,6 +1577,21 @@ ENGAGE_API int engageSetFipsCrypto(const char * _Nonnull jsonParams);
1577
1577
  */
1578
1578
  ENGAGE_API int engageIsCryptoFipsValidated(void);
1579
1579
 
1580
+ /**
1581
+ * @brief [SYNC] Set the certstore content via buffer
1582
+ *
1583
+ * An alternative to engageOpenCertStore whereby a buffer is passed to the Engine containing
1584
+ * a certificate store's binary data rather having it loaded from file.
1585
+ *
1586
+ * No events are generated by this API call.
1587
+ *
1588
+ * @param buffer Pointer to the certificate store byte array
1589
+ * @param size Number of bytes in the buffer
1590
+ * @param passwordHexByteString Hexadecimal representation of the password to be used to decrypt the buffer
1591
+ * @return ENGAGE_RESULT_OK on success, other values on failure
1592
+ * @see engageOpenCertStore()
1593
+ */
1594
+ ENGAGE_API int engageSetCertStore(const uint8_t * _Nonnull buffer, size_t size, const char * _Nullable passwordHexByteString);
1580
1595
 
1581
1596
  // TODO: Engage compression/decompression functions not available at this time
1582
1597
  #if 0
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "engage-engine",
3
- "version": "1.230.90700001",
3
+ "version": "1.232.90720001",
4
4
  "description": "Use Engage to communicate with everyone, everywhere, from any device",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"