示例#1
0
文件: QueueAgent.cs 项目: Ieaun/Diss
        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)));
        }
示例#2
0
        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);
        }