lora experiments

Dependencies:   BLE_API LoRaWAN-lib SX1276Lib mbed nRF51822 HCSR04Lib

Fork of LoRa by Olav Nymoen

Revision:
4:63d6744a61b6
Parent:
3:70d40f678f37
--- a/main.cpp	Wed Jun 08 12:40:38 2016 +0000
+++ b/main.cpp	Thu Jun 09 14:42:23 2016 +0000
@@ -159,6 +159,7 @@
 
 MibRequestConfirm_t mibReq;
 
+bool loraHasJoinedNetwork = false;
 
 /* BLE stuff */
 const uint16_t loraConfServiceUUID  = 0xA000;
@@ -169,16 +170,18 @@
 const uint16_t DevEuiUUID           = 0xA001;
 const uint16_t AppEuiUUID           = 0xA002;
 const uint16_t AppKeyUUID           = 0xA003;
+const uint16_t DevJoinedUUID        = 0xA004;
 
 ReadWriteArrayGattCharacteristic<uint8_t, sizeof(DevEui)> DevEuiChar(DevEuiUUID, DevEui);
 ReadWriteArrayGattCharacteristic<uint8_t, sizeof(AppEui)> AppEuiChar(AppEuiUUID, AppEui);
 WriteOnlyArrayGattCharacteristic<uint8_t, sizeof(AppKey)> AppKeyChar(AppKeyUUID, AppKey);
+ReadOnlyGattCharacteristic<bool> DevJoinedChar(DevJoinedUUID, &loraHasJoinedNetwork);
 
-GattCharacteristic *loraChars[] = {&DevEuiChar, &AppEuiChar, &AppKeyChar};
+GattCharacteristic *loraChars[] = {&DevEuiChar, &AppEuiChar, &AppKeyChar, &DevJoinedChar};
 #else
-const uint16_t DevAddrUUID          = 0xA004;
-const uint16_t NwkSKeyUUID          = 0xA005;
-const uint16_t AppSKeyUUID          = 0xA006;
+const uint16_t DevAddrUUID          = 0xA011;
+const uint16_t NwkSKeyUUID          = 0xA012;
+const uint16_t AppSKeyUUID          = 0xA013;
 
 ReadWriteGattCharacteristic<uint32_t> DevAddrChar(DevAddrUUID, &DevAddr);
 WriteOnlyArrayGattCharacteristic<uint8_t, sizeof(NwkSKey)> NwkSKeyChar(NwkSKeyUUID, NwkSKey);
@@ -372,6 +375,9 @@
                 printf("We joined! \r\n");
                 // Status is OK, node has joined the network
                 IsNetworkJoinedStatusUpdate = true;
+                loraHasJoinedNetwork = true;
+                BLE::Instance(BLE::DEFAULT_INSTANCE).updateCharacteristicValue(DevJoinedChar.getValueHandle(),
+                    (const uint8_t *)&loraHasJoinedNetwork, sizeof (loraHasJoinedNetwork));
                 break;
             }
             default:
@@ -457,8 +463,9 @@
 /*
  *  Restart advertising when phone app disconnects
  */
-void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *)
+void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
 {
+    printf("%s - reason 0x%x", __FUNCTION__, params->reason);
     BLE::Instance(BLE::DEFAULT_INSTANCE).gap().startAdvertising();
 }
  
@@ -596,6 +603,9 @@
                 MlmeReq_t mlmeReq;
 
                 mlmeReq.Type = MLME_JOIN;
+                loraHasJoinedNetwork = false;
+                BLE::Instance(BLE::DEFAULT_INSTANCE).updateCharacteristicValue(DevJoinedChar.getValueHandle(),
+                    (const uint8_t *)&loraHasJoinedNetwork, sizeof (loraHasJoinedNetwork));
 
                 mlmeReq.Req.Join.DevEui = DevEui;
                 mlmeReq.Req.Join.AppEui = AppEui;