public DeduplicationResult Process(DeduplicationResult result, uint fCntUp) { if (result is null) { throw new ArgumentNullException(nameof(result)); } result.CanProcess = true; // can always process. Message is marked if it is a duplicate return(result); }
public DeduplicationResult Process(DeduplicationResult result, uint fCntUp) { result.CanProcess = !result.IsDuplicate; if (result.IsDuplicate) { Logger.Log(this.loRaDevice.DevEUI, $"duplicate message '{fCntUp}' is dropped.", LogLevel.Debug); } return(result); }
public DeduplicationResult Process(DeduplicationResult result, uint fCntUp) { if (result is null) { throw new ArgumentNullException(nameof(result)); } result.CanProcess = !result.IsDuplicate; if (result.IsDuplicate) { this.logger.LogDebug($"duplicate message '{fCntUp}' is dropped."); } return(result); }
private async Task <bool> SendDeviceEventAsync(LoRaRequest request, LoRaDevice loRaDevice, LoRaOperationTimeWatcher timeWatcher, object decodedValue, DeduplicationResult deduplicationResult, byte[] decryptedPayloadData) { var loRaPayloadData = (LoRaPayloadData)request.Payload; var deviceTelemetry = new LoRaDeviceTelemetry(request.Rxpk, loRaPayloadData, decodedValue, decryptedPayloadData) { DeviceEUI = loRaDevice.DevEUI, GatewayID = this.configuration.GatewayID, Edgets = (long)(timeWatcher.Start - DateTime.UnixEpoch).TotalMilliseconds }; if (deduplicationResult != null && deduplicationResult.IsDuplicate) { deviceTelemetry.DupMsg = true; } Dictionary <string, string> eventProperties = null; if (loRaPayloadData.IsUpwardAck()) { eventProperties = new Dictionary <string, string>(); Logger.Log(loRaDevice.DevEUI, $"message ack received for cloud to device message id {loRaDevice.LastConfirmedC2DMessageID}", LogLevel.Information); eventProperties.Add(Constants.C2D_MSG_PROPERTY_VALUE_NAME, loRaDevice.LastConfirmedC2DMessageID ?? Constants.C2D_MSG_ID_PLACEHOLDER); loRaDevice.LastConfirmedC2DMessageID = null; } this.ProcessAndSendMacCommands(loRaPayloadData, ref eventProperties); if (await loRaDevice.SendEventAsync(deviceTelemetry, eventProperties)) { string payloadAsRaw = null; if (deviceTelemetry.Data != null) { payloadAsRaw = JsonConvert.SerializeObject(deviceTelemetry.Data, Formatting.None); } Logger.Log(loRaDevice.DevEUI, $"message '{payloadAsRaw}' sent to hub", LogLevel.Information); return(true); } return(false); }
public DeduplicationResult Process(DeduplicationResult result, uint fCntUp) { result.CanProcess = true; // can always process. Message is marked if it is a duplicate return(result); }