From 11c9522d53380428bc0346eb49cf81119548c725 Mon Sep 17 00:00:00 2001 From: "jacob.eva" Date: Tue, 2 Jul 2024 12:15:40 +0100 Subject: [PATCH] Fix SX1280 preamble calculation bug --- Radio.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Radio.cpp b/Radio.cpp index 4fb40fd..d1ee1c4 100644 --- a/Radio.cpp +++ b/Radio.cpp @@ -1819,18 +1819,20 @@ void sx128x::setPacketParams(uint32_t preamble, uint8_t headermode, uint8_t leng // because there is no access to these registers on the sx1280, we have // to set all these parameters at once or not at all. uint8_t buf[7]; - // calculate exponent and mantissa values for modem uint8_t e = 1; uint8_t m = 1; uint32_t preamblelen; - for (e <= 15; e++;) { - for (m <= 15; m++;) { - preamblelen = m * (uint32_t(1) << e); + while (e <= 15) { + while (m <= 15) { + preamblelen = m * (pow(2,e)); if (preamblelen >= preamble) break; + m++; } if (preamblelen >= preamble) break; + m = 0; + e++; } buf[0] = (e << 4) | m;