public async Task EnqueueToUplink(NewPacket packet) { QueueTypes.Queues.Uplinks.Uplink uplinkPacket = null; if (packet.PacketType == "rxpk") { uplinkPacket = new QueueTypes.Queues.Uplinks.Uplink { PacketType = "rxpk", isRegistered = packet.RxPacket.isRegesteredDevice, RxPacket = new QueueTypes.Models.ReceivedPackets.ReceivedPacket { metadata = new QueueTypes.Models.ReceivedPackets.ReceivedPacketsMetadata { Channel = packet.RxPacket.metadata.Channel, CodingRate = packet.RxPacket.metadata.CodingRate, Data = packet.RxPacket.metadata.Data, DataRate = packet.RxPacket.metadata.DataRate, Frequency = packet.RxPacket.metadata.Frequency, LuminanceSignalToRatio = packet.RxPacket.metadata.LuminanceSignalToRatio, Modulation = packet.RxPacket.metadata.Modulation, Size = packet.RxPacket.metadata.Size, Timestamp = packet.RxPacket.metadata.Timestamp, RecievedSignalStrenghtIndicator = packet.RxPacket.metadata.RecievedSignalStrenghtIndicator, RadioFrequencyChannel = packet.RxPacket.metadata.RadioFrequencyChannel, Stat = packet.RxPacket.metadata.Stat } }, UnalteredPacket = packet.UnalteredPacket }; } if (packet.PacketType == "stat") { uplinkPacket = new QueueTypes.Queues.Uplinks.Uplink { PacketType = "stat", GsPacket = new QueueTypes.Models.GatewayStatusUpdates.GatewayStatusUpdate { OriginalMessage = packet.StatPacket.OriginalMessage }, UnalteredPacket = packet.UnalteredPacket }; } _logger.Information("Publishing uplink notification {@Notification}", uplinkPacket); await _bus.PubSub.PublishAsync(uplinkPacket, handler => handler.WithTopic(nameof(QueueTypes.Queues.Uplinks.Uplink))); }
public void OnHandleNotification(QueueTypes.Queues.Uplinks.Uplink packet) { _logger.Information("Received packet {@Packet}", packet); try { if (packet.PacketType == "rxpk") { _mediator.Publish(new Notification { PacketType = packet.PacketType, isRegisteredDevice = packet.isRegistered, RxMetadata = new ReceivedPacketMetadata { Channel = packet.RxPacket.metadata.Channel, CodingRate = packet.RxPacket.metadata.CodingRate, Data = packet.RxPacket.metadata.Data, DataRate = packet.RxPacket.metadata.DataRate, Frequency = packet.RxPacket.metadata.Frequency, LuminanceSignalToRatio = packet.RxPacket.metadata.LuminanceSignalToRatio, Modulation = packet.RxPacket.metadata.Modulation, Size = packet.RxPacket.metadata.Size, Timestamp = packet.RxPacket.metadata.Timestamp, RecievedSignalStrenghtIndicator = packet.RxPacket.metadata.RecievedSignalStrenghtIndicator, RadioFrequencyChannel = packet.RxPacket.metadata.RadioFrequencyChannel, Stat = packet.RxPacket.metadata.Stat }, OriginalMessage = packet.RxPacket.OriginalMessage, UnalteredPacket = packet.UnalteredPacket }); } if (packet.PacketType == "stat") { _mediator.Publish(new Notification { PacketType = packet.PacketType, GsMetadata = packet.GsPacket.metadata != null? new GatewayStatusUpdateMetadata { Ackr = packet.GsPacket.metadata.Ackr, Altitude = packet.GsPacket.metadata.Altitude, Description = packet.GsPacket.metadata.Description, Dwnb = packet.GsPacket.metadata.Dwnb, Email = packet.GsPacket.metadata.Email, Latitude = packet.GsPacket.metadata.Latitude, Longitude = packet.GsPacket.metadata.Longitude, pfrm = packet.GsPacket.metadata.pfrm, Rxfw = packet.GsPacket.metadata.Rxfw, Rxnb = packet.GsPacket.metadata.Rxnb, Rxok = packet.GsPacket.metadata.Rxok, Time = packet.GsPacket.metadata.Time, Txnb = packet.GsPacket.metadata.Txnb }: null, OriginalMessage = packet.GsPacket.OriginalMessage, UnalteredPacket = packet.UnalteredPacket }); } } catch (Exception e) { _logger.Error("Failed to handle packet {@Packet} with exception {@Exception}", packet, e); } _logger.Information("Finished handling packet {@Packet}", packet); }