sx1261/2 driver

Dependents:   alarm_slave iq_sx126x sx126x_simple_TX_shield_2020a sx126x_simple_RX_shield_2020a ... more

Driver for SX1261 or SX1262

Revision:
4:b941bceb401d
Parent:
3:f6f2f8adcd22
Child:
5:8b75387af4e0
--- a/sx126x.cpp	Tue Jul 03 15:38:55 2018 -0700
+++ b/sx126x.cpp	Thu Jul 05 13:38:27 2018 -0700
@@ -61,7 +61,6 @@
     printf("\r\n");
 }
 
-extern RawSerial pc;
 void SX126x::service()
 {
     IrqFlags_t irqFlags, clearIrqFlags;
@@ -81,6 +80,8 @@
                 txDone.call();
             clearIrqFlags.bits.TxDone = 1;
             chipMode = CHIPMODE_NONE;
+            if (chipModeChange)
+                chipModeChange.call();
         }
         if (irqFlags.bits.RxDone) {
             if (rxDone) {
@@ -104,6 +105,8 @@
                     timeout(chipMode == CHIPMODE_TX);
             }
             chipMode = CHIPMODE_NONE;
+            if (chipModeChange)
+                chipModeChange.call();
             clearIrqFlags.bits.Timeout = 1;
         }
 
@@ -185,6 +188,8 @@
     xfer(OPCODE_SET_TX, 3, 0, buf);
 
     chipMode = CHIPMODE_TX;
+    if (chipModeChange)
+        chipModeChange.call();
 }
 
 void SX126x::start_rx(unsigned timeout)
@@ -197,6 +202,8 @@
     xfer(OPCODE_SET_RX, 3, 0, buf);
 
     chipMode = CHIPMODE_RX;
+    if (chipModeChange)
+        chipModeChange.call();
 }
 
 uint8_t SX126x::setMHz(float MHz)
@@ -315,6 +322,17 @@
     xfer(OPCODE_SET_STANDBY, 1, 0, &octet);
 
     chipMode = CHIPMODE_NONE;
+    if (chipModeChange)
+        chipModeChange.call();
+}
+
+void SX126x::setFS()
+{
+    xfer(OPCODE_SET_FS, 0, 0, NULL);
+
+    chipMode = CHIPMODE_NONE;
+    if (chipModeChange)
+        chipModeChange.call();
 }
 
 void SX126x::setSleep(bool warmStart, bool rtcWakeup)
@@ -327,6 +345,8 @@
     xfer(OPCODE_SET_SLEEP, 1, 0, &sc.octet);
 
     chipMode = CHIPMODE_NONE;
+    if (chipModeChange)
+        chipModeChange.call();
 }
 
 void SX126x::hw_reset(PinName pin)