コード例 #1
0
        internal async Task <LoRaADRResult> HandleADRRequest(string devEUI, LoRaADRRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            if (request.ClearCache)
            {
                await this.adrManager.ResetAsync(devEUI);

                return(new LoRaADRResult());
            }

            var newEntry = new LoRaADRTableEntry
            {
                DevEUI    = devEUI,
                FCnt      = request.FCntUp,
                GatewayId = request.GatewayId,
                Snr       = request.RequiredSnr
            };

            if (request.PerformADRCalculation)
            {
                return(await this.adrManager.CalculateADRResultAndAddEntryAsync(devEUI, request.GatewayId, request.FCntUp, request.FCntDown, request.RequiredSnr, request.DataRate, request.MinTxPowerIndex, request.MaxDataRate, newEntry));
            }
            else
            {
                await this.adrManager.StoreADREntryAsync(newEntry);

                return(await this.adrManager.GetLastResultAsync(devEUI));
            }
        }
コード例 #2
0
 private async Task PrepareADRFrames(DevEui deviceEUI, int numberOfFrames, LoRaADRRequest req)
 {
     await PrepareADRFrames(deviceEUI, numberOfFrames, new List <LoRaADRRequest>() { req });
 }