May 2021 Commit

Dependencies:   sx128x sx12xx_hal

Revision:
2:0b7620bda2c9
Parent:
1:3199506bc2e5
Child:
3:d8b57eca8c45
--- a/main.cpp	Thu Aug 31 23:15:04 2017 +0000
+++ b/main.cpp	Fri Sep 01 23:03:35 2017 +0000
@@ -106,7 +106,47 @@
             ;
     }
 }
- 
+
+void cmd_op(int dbm)
+{
+    int i = dbm;
+    RegPdsTrim1_t pds_trim;
+    uint8_t adr;
+    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);
+        }
+        if (i > 1)
+                radio.RegPaConfig.bits.OutputPower = i - 2;
+    } else {
+        /* RFO used: -1 to +14dbm */
+        if (i < 15)
+            radio.RegPaConfig.bits.OutputPower = i + 1;
+    }
+    radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);
+
+    radio.RegPaConfig.octet = radio.read_reg(REG_PACONFIG);
+    if (radio.RegPaConfig.bits.PaSelect) {
+        printf("PA_BOOST ");
+        dbm = radio.RegPaConfig.bits.OutputPower + pds_trim.bits.prog_txdac - 2;
+    } else {
+        printf("RFO ");
+        dbm = radio.RegPaConfig.bits.OutputPower - 1;
+    }
+    printf("OutputPower:%ddBm\r\n", dbm);
+}
+
 int main()
 {
     printf("\r\nreset-tx\r\n");
@@ -135,10 +175,12 @@
             radio.RegPaConfig.bits.PaSelect = 1;
         else
             radio.RegPaConfig.bits.PaSelect = 0;
+        cmd_op(20);
     } else {
         /* MAS shield board, only RFO TX */
         radio.RegPaConfig.bits.PaSelect = 0;
         printf("MAS\r\n");
+        cmd_op(14);
     }
     rfsw.output();
     radio.write_reg(REG_PACONFIG, radio.RegPaConfig.octet);