]> git.tnoah.ca Git - lora-radio.git/commitdiff
Fix BLE service duplication bug on nRF52
authorjacob.eva <x00010@disroot.org>
Wed, 16 Oct 2024 15:15:29 +0000 (16:15 +0100)
committerjacob.eva <x00010@disroot.org>
Wed, 16 Oct 2024 15:15:29 +0000 (16:15 +0100)
Bluetooth.h

index ee3964e081c9470d9eca3b5c142fb1b6c7e44040..60cf86a80b62ef36ec45dd91a91e6b0920ad0c51 100644 (file)
@@ -32,6 +32,7 @@
   BLEUart SerialBT;
   BLEDis  bledis;
   BLEBas  blebas;
+  bool SerialBT_init = false;
 #endif
 
 #define BT_PAIRING_TIMEOUT 35000
@@ -502,10 +503,14 @@ void bt_disconnect_callback(uint16_t conn_handle, uint8_t reason) {
       // start device information service
       bledis.begin();
 
-      SerialBT.bufferTXD(true); // enable buffering
+      // Guard to ensure SerialBT service is not duplicated through BT being power cycled
+      if (!SerialBT_init) {
+          SerialBT.bufferTXD(true); // enable buffering
 
-      SerialBT.setPermission(SECMODE_ENC_WITH_MITM, SECMODE_ENC_WITH_MITM); // enable encryption for BLE serial
-      SerialBT.begin();
+          SerialBT.setPermission(SECMODE_ENC_WITH_MITM, SECMODE_ENC_WITH_MITM); // enable encryption for BLE serial
+          SerialBT.begin();
+          SerialBT_init = true;
+      }
 
       blebas.begin();