wayne roberts / Mbed OS utility_sx12xx
Revision:
10:db4e11a55bda
Parent:
7:ea73b63b9eb1
Child:
13:8ce61a1897ab
--- a/radio_sx127x.cpp	Mon May 04 17:54:55 2020 -0700
+++ b/radio_sx127x.cpp	Tue May 19 15:35:50 2020 -0700
@@ -452,7 +452,7 @@
 
     radio.write_reg(REG_OCP, radio.RegOcp.octet);
 
-    return MENUMODE_REDRAW;
+    return false;
 }
 
 const value_item_t Radio::ocp_item = { _ITEM_VALUE, 4, ocp_print, ocp_write};
@@ -647,19 +647,50 @@
 
 const button_item_t Radio::lora_cadrx_item = { _ITEM_BUTTON, "CADRX", cadrx_push };
 
+bool Radio::lora_ppm_offset_read()
+{
+    if (radio.type == SX1276) {
+        lora.RegModemConfig3.octet = radio.read_reg(REG_LR_MODEMCONFIG3);
+        return lora.RegModemConfig3.sx1276bits.LowDataRateOptimize;
+    } else if (radio.type == SX1272) {
+        lora.RegModemConfig.octet = radio.read_reg(REG_LR_MODEMCONFIG);
+        return lora.RegModemConfig.sx1272bits.LowDataRateOptimize;
+    } else
+        return false;
+}
+
+bool Radio::lora_ppm_offset_push()
+{
+    if (radio.type == SX1276) {
+        lora.RegModemConfig3.octet = radio.read_reg(REG_LR_MODEMCONFIG3);
+        lora.RegModemConfig3.sx1276bits.LowDataRateOptimize ^= 1;
+        radio.write_reg(REG_LR_MODEMCONFIG3, lora.RegModemConfig3.octet);
+        return lora.RegModemConfig3.sx1276bits.LowDataRateOptimize;
+    } else if (radio.type == SX1272) {
+        lora.RegModemConfig.octet = radio.read_reg(REG_LR_MODEMCONFIG);
+        lora.RegModemConfig.sx1272bits.LowDataRateOptimize ^= 1;
+        radio.write_reg(REG_LR_MODEMCONFIG, lora.RegModemConfig.octet);
+        return lora.RegModemConfig.sx1272bits.LowDataRateOptimize;
+    } else
+        return false;
+}
+
+const toggle_item_t Radio::lora_ppm_offset_item = { _ITEM_TOGGLE, "LowDatarateOptimize", NULL, lora_ppm_offset_read, lora_ppm_offset_push};
+
 const menu_t Radio::lora_menu[] = {
     { {FIRST_CHIP_MENU_ROW, 22},     "bw:", &lora_bw_item, FLAG_MSGTYPE_ALL },
     { {FIRST_CHIP_MENU_ROW, 35},      "sf:",   &lora_sf_item, FLAG_MSGTYPE_ALL },
     { {FIRST_CHIP_MENU_ROW, 42},      "cr:",   &lora_cr_item, FLAG_MSGTYPE_ALL },
     { {FIRST_CHIP_MENU_ROW, 50}, "PreambleLength:", &lora_pblLen_item, FLAG_MSGTYPE_ALL },
 
-    { {FIRST_CHIP_MENU_ROW+1, 1}, NULL, &lora_fixlen_item, FLAG_MSGTYPE_ALL },
-    { {FIRST_CHIP_MENU_ROW+1, 10}, NULL, &lora_crcon_item, FLAG_MSGTYPE_ALL },
-    { {FIRST_CHIP_MENU_ROW+1, 20}, NULL, &lora_iqinvTX_item, FLAG_MSGTYPE_ALL },
-    { {FIRST_CHIP_MENU_ROW+1, 30}, NULL, &lora_iqinvRX_item, FLAG_MSGTYPE_ALL },
+    { {FIRST_CHIP_MENU_ROW+1, 1},    NULL, &lora_fixlen_item, FLAG_MSGTYPE_ALL },
+    { {FIRST_CHIP_MENU_ROW+1, 10},   NULL, &lora_crcon_item, FLAG_MSGTYPE_ALL },
+    { {FIRST_CHIP_MENU_ROW+1, 20},   NULL, &lora_iqinvTX_item, FLAG_MSGTYPE_ALL },
+    { {FIRST_CHIP_MENU_ROW+1, 30},   NULL, &lora_iqinvRX_item, FLAG_MSGTYPE_ALL },
     { {FIRST_CHIP_MENU_ROW+1, 40}, "ppg:", &lora_ppg_item, FLAG_MSGTYPE_ALL },
+    { {FIRST_CHIP_MENU_ROW+1, 48},   NULL, &lora_ppm_offset_item, FLAG_MSGTYPE_ALL },
 
-    { {FIRST_CHIP_MENU_ROW+2, 1}, NULL, &lora_cadrx_item, FLAG_MSGTYPE_ALL },
+    { {FIRST_CHIP_MENU_ROW+2, 1},    NULL, &lora_cadrx_item, FLAG_MSGTYPE_ALL },
 
     { {0, 0}, NULL, NULL }
 };