1

Revision:
15:e1c04ec39aa4
Parent:
14:94993ae5b164
Parent:
13:a354f82d12d9
Child:
16:34de2ab7eb32
diff -r 94993ae5b164 -r e1c04ec39aa4 radio_sx128x.cpp
--- a/radio_sx128x.cpp	Wed Sep 11 13:20:21 2019 -0700
+++ b/radio_sx128x.cpp	Wed Sep 11 13:23:37 2019 -0700
@@ -296,7 +296,7 @@
         RadioEvents->TxDone_botHalf();
 }
 
-void Radio::Init(const RadioEvents_t* e)
+void Radio::Init(const RadioEvents_t* e, unsigned spi_hz)
 {
     uint64_t sa;
 
@@ -306,6 +306,7 @@
     radio.chipModeChange = chipModeChange;
     radio.diox_topHalf = diox_top_half;
 
+    spi.frequency(spi_hz);
     readChip();
 
     radio.setRegulator(0);  // default to LDO
@@ -538,7 +539,7 @@
     radio.xfer(OPCODE_SET_PACKET_PARAMS, 7, 0, ppGFSK.buf);
 }
 
-void Radio::SetLoRaSymbolTimeout(uint8_t symbs)
+void Radio::SetLoRaSymbolTimeout(uint16_t symbs)
 {
     nSymbs = symbs;
     rxTimeoutMs = nSymbs * (symbolPeriodUs / 1000.0);
@@ -549,15 +550,18 @@
     if (radio.getPacketType() != PACKET_TYPE_LORA)
         radio.setPacketType(PACKET_TYPE_LORA);
 
-    if (bwKHz > 800) {
+    if (bwKHz > 800)
         mpLORA.lora.bandwidth = LORA_BW_1600;
-    } if (bwKHz > 400) {
+    else if (bwKHz > 400)
         mpLORA.lora.bandwidth = LORA_BW_800;
-    } if (bwKHz > 200) {
+    else if (bwKHz > 200)
         mpLORA.lora.bandwidth = LORA_BW_400;
-    } else {
+    else if (bwKHz > 100)
         mpLORA.lora.bandwidth = LORA_BW_200;
-    }
+    else if (bwKHz > 50)
+        mpLORA.lora.bandwidth = LORA_BW_100;
+    else
+        mpLORA.lora.bandwidth = LORA_BW_50;
 
     mpLORA.lora.codingRate = cr;
 
@@ -627,12 +631,15 @@
     radio.setStandby(STDBY_RC);
 }
 
+#define TX_PWR_OFFSET           18
 void Radio::set_tx_dbm(int8_t dbm)
 {
     if (dbm == PA_OFF_DBM) {
         /* TODO: shut off PA */
+        radio.set_tx_dbm(0);
     } else {
-        radio.set_tx_dbm(dbm);
+        /* power range -18dBm to +13dBm */
+        radio.set_tx_dbm(dbm + TX_PWR_OFFSET);
     }
 }