]> git.tnoah.ca Git - lora-radio.git/commitdiff
Fix SX1280 preamble calculation bug
authorjacob.eva <x00010@disroot.org>
Tue, 2 Jul 2024 11:15:40 +0000 (12:15 +0100)
committerjacob.eva <x00010@disroot.org>
Tue, 2 Jul 2024 11:15:40 +0000 (12:15 +0100)
Radio.cpp

index 4fb40fd53e49900a95549af1e73d7ec0c806e282..d1ee1c4eeb6e06ac28e420a51d6edf7d70a55006 100644 (file)
--- 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;