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)); } }
private async Task PrepareADRFrames(DevEui deviceEUI, int numberOfFrames, LoRaADRRequest req) { await PrepareADRFrames(deviceEUI, numberOfFrames, new List <LoRaADRRequest>() { req }); }