From ed4d6e88972ff1367363ad2aed8aee16d1bfa3c2 Mon Sep 17 00:00:00 2001 From: jgromes Date: Sat, 13 Feb 2021 17:41:53 +0100 Subject: [PATCH] [SX127x] Added -1 as alias for lowest supported frequency deviation --- src/modules/SX127x/SX127x.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/SX127x/SX127x.cpp b/src/modules/SX127x/SX127x.cpp index 48be5c66..40605c51 100644 --- a/src/modules/SX127x/SX127x.cpp +++ b/src/modules/SX127x/SX127x.cpp @@ -708,8 +708,14 @@ int16_t SX127x::setFrequencyDeviation(float freqDev) { return(ERR_WRONG_MODEM); } + // set frequency deviation to lowest available setting (required for digimodes) + float newFreqDev = freqDev; + if(freqDev < 0.0) { + newFreqDev = 0.6; + } + // check frequency deviation range - if(!((freqDev + _br/2.0 <= 250.0) && (freqDev <= 200.0))) { + if(!((newFreqDev + _br/2.0 <= 250.0) && (freqDev <= 200.0))) { return(ERR_INVALID_FREQUENCY_DEVIATION); } @@ -719,7 +725,7 @@ int16_t SX127x::setFrequencyDeviation(float freqDev) { // set allowed frequency deviation uint32_t base = 1; - uint32_t FDEV = (freqDev * (base << 19)) / 32000; + uint32_t FDEV = (newFreqDev * (base << 19)) / 32000; state = _mod->SPIsetRegValue(SX127X_REG_FDEV_MSB, (FDEV & 0xFF00) >> 8, 5, 0); state |= _mod->SPIsetRegValue(SX127X_REG_FDEV_LSB, FDEV & 0x00FF, 7, 0); return(state);