From f3c18875175a9504167f6ae12e6af85a1a8b37be Mon Sep 17 00:00:00 2001 From: jgromes Date: Sat, 13 Feb 2021 17:41:46 +0100 Subject: [PATCH] [SX128x] Added -1 as alias for lowest supported frequency deviation --- src/modules/SX126x/SX126x.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/SX126x/SX126x.cpp b/src/modules/SX126x/SX126x.cpp index 8a1809ca..0f0e2804 100644 --- a/src/modules/SX126x/SX126x.cpp +++ b/src/modules/SX126x/SX126x.cpp @@ -732,11 +732,17 @@ int16_t SX126x::setFrequencyDeviation(float freqDev) { if(getPacketType() != SX126X_PACKET_TYPE_GFSK) { return(ERR_WRONG_MODEM); } + + // set frequency deviation to lowest available setting (required for digimodes) + float newFreqDev = freqDev; + if(freqDev < 0.0) { + newFreqDev = 0.6; + } - RADIOLIB_CHECK_RANGE(freqDev, 0.0, 200.0, ERR_INVALID_FREQUENCY_DEVIATION); + RADIOLIB_CHECK_RANGE(newFreqDev, 0.6, 200.0, ERR_INVALID_FREQUENCY_DEVIATION); // calculate raw frequency deviation value - uint32_t freqDevRaw = (uint32_t)(((freqDev * 1000.0) * (float)((uint32_t)(1) << 25)) / (SX126X_CRYSTAL_FREQ * 1000000.0)); + uint32_t freqDevRaw = (uint32_t)(((newFreqDev * 1000.0) * (float)((uint32_t)(1) << 25)) / (SX126X_CRYSTAL_FREQ * 1000000.0)); // check modulation parameters /*if(2 * freqDevRaw + _br > _rxBwKhz * 1000.0) {