wayne roberts / Mbed OS alarm_master

Dependencies:   sx12xx_hal

Revision:
5:1652e04809fb
Child:
6:59ba1113b3c6
diff -r 19056d9707ef -r 1652e04809fb TARGET_MOTE_L152RC/board.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TARGET_MOTE_L152RC/board.cpp	Mon Feb 05 15:03:27 2018 -0800
@@ -0,0 +1,120 @@
+#include "platform.h"
+
+#define RADIO_RESET              PC_2 //NorAm_Mote Reset_sx
+#define RADIO_MOSI               PB_15 //NorAm_Mote SPI2 Mosi
+#define RADIO_MISO               PB_14 //NorAm_Mote SPI2 Miso
+#define RADIO_SCLK               PB_13 //NorAm_Mote  SPI2 Clk
+#define RADIO_NSS                PB_12 //NorAm_Mote SPI2 Nss
+ 
+#define RADIO_DIO0              PC_6 //NorAm_Mote DIO0 
+#define RADIO_DIO1              PC_10 //NorAm_Mote DIO1 
+#define RADIO_DIO2              PC_8 //NorAm_Mote DIO2 
+#define RADIO_DIO3              PB_4 //NorAm_Mote DIO3 
+#define RADIO_DIO4              PB_5 //NorAm_Mote DIO4 
+#define RADIO_DIO5              PB_6 //NorAm_Mote DIO5
+ 
+#define RFSW1                    PC_4 //NorAm_Mote RFSwitch_CNTR_1
+#define RFSW2                    PC_13 //NorAm_Mote RFSwitch_CNTR_2
+
+SPI spi(RADIO_MOSI, RADIO_MISO, RADIO_SCLK);
+SX127x radio(RADIO_DIO0, RADIO_DIO1, RADIO_NSS, spi, RADIO_RESET);
+
+DigitalOut rfsw1(RFSW1);
+DigitalOut rfsw2(RFSW2);
+
+//                    txpow:   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14  15  16  17  18  19
+const uint8_t PaBTable[20] = { 0, 0, 0, 0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15 };
+#define DBM_TO_PABOOST(x)       (PaBTable[x])
+ 
+//                    txpow:  20 21 22 23 24 25 26 27 28 29 30
+const uint8_t RfoTable[11] = { 1, 1, 1, 2, 2, 3, 4, 5, 6, 8, 9 };
+#define DBM_TO_RFO(x)       (RfoTable[x-20])
+#define DBM_TO_MOTE(x)  \
+
+void rfsw_callback() {
+    if (radio.RegOpMode.bits.Mode == RF_OPMODE_TRANSMITTER) {  // start of transmission
+        if (radio.HF) {
+            if (radio.RegPaConfig.bits.PaSelect) { // if PA_BOOST
+                rfsw2 = 0;
+                rfsw1 = 1;
+            } else { // RFO to power amp
+                rfsw2 = 1;
+                rfsw1 = 0;            
+            }
+        } 
+    } else if (radio.RegOpMode.bits.Mode == RF_OPMODE_RECEIVER || radio.RegOpMode.bits.Mode == RF_OPMODE_CAD) { // start of reception
+        if (radio.HF) {
+            rfsw2 = 1;
+            rfsw1 = 1;              
+        }
+    } else { // RF switch shutdown
+        rfsw2 = 0;
+        rfsw1 = 0;     
+    }
+}
+
+//                            9 10   1PPS
+//   PB5-D4       HDR_DIO4 * 11 12 * HDR_DIO0        PA8-D7
+//                 ADC_IN3   13 14   HDR_FEM_SPARE   PB1 RED_LED
+//                           15 16
+// D3-PB3-SWO     HDR_DIO2   17 18   HDR_FEM_CPS  PB10-D6 YEL-LED
+// A5-PC0      HDR_FEM_CSD * 19 20 * HDR_FEM_CTX  A4-PC1
+DigitalIn pinA(PB_5); // CONN_EXIT1-11
+DigitalIn pinB(PC_0); // CONN_EXIT1-19
+DigitalIn pinC(PA_8); // CONN_EXIT1-12
+DigitalIn pinD(PC_1); // CONN_EXIT1-20
+
+void cmd_op(int dbm)
+{
+    int i = dbm;
+    RegPdsTrim1_t pds_trim;
+    uint8_t adr;
+
+    radio.RegPaConfig.octet = radio.read_reg(REG_PACONFIG);
+
+    if (dbm < 20) {
+        radio.RegPaConfig.bits.PaSelect = 1;
+        radio.RegPaConfig.bits.OutputPower = PaBTable[dbm];
+        printf("PA_BOOST ");
+    } else {
+        radio.RegPaConfig.bits.PaSelect = 0;
+        radio.RegPaConfig.bits.OutputPower = RfoTable[dbm-20];
+        printf("RFO ");
+    }
+
+    printf("%ddBm, PaSelect%u, OutputPower%u\r\n", dbm,
+        radio.RegPaConfig.bits.PaSelect,
+        radio.RegPaConfig.bits.OutputPower
+    );
+
+    if (radio.type == SX1276)
+        adr = REG_PDSTRIM1_SX1276;
+    else
+        adr = REG_PDSTRIM1_SX1272;
+       
+    pds_trim.octet = radio.read_reg(adr);   
+
+    if (radio.RegPaConfig.bits.PaSelect) {
+        /* PABOOST used: +2dbm to +17, or +20 */
+        if (i == 20) {
+            printf("+20dBm PADAC bias\r\n");
+            i -= 3;
+            pds_trim.bits.prog_txdac = 7;
+            radio.write_reg(adr, pds_trim.octet);
+            cmd_ocp(150);
+        } else if (dbm < 18) {
+            pds_trim.bits.prog_txdac = 5;
+            radio.write_reg(adr, pds_trim.octet);
+            cmd_ocp(120);
+        }
+    } else
+        cmd_ocp(80);
+
+    radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
+
+}
+
+void board_init()
+{
+    cmd_op(26);
+}