BLE Application to open a Garage door

Dependencies:   BLE_API Crypto RNG mbed nRF51822

Fork of BLE_LED by Bluetooth Low Energy

Revision:
12:eaee29bfa1c7
Parent:
11:3de9b542eeac
Child:
13:bc1be947b497
--- a/main.cpp	Wed Aug 26 00:13:10 2015 +0000
+++ b/main.cpp	Wed Aug 26 00:59:07 2015 +0000
@@ -23,13 +23,16 @@
 // I -> 4 bytes ID (chars)
 // S -> 8 bytes SHARED_SECRET   (chars)
 
+// Generating K and iv:
+//openssl enc -aes-128-cbc -pass pass:********** -nosalt -P
+
 #define SHARED_KEY  "figueiredo"
 #define DEVICE_NAME    "Garagem"
 
 BLE        ble;
 DigitalOut actuatedLED(P0_19);
 Timeout offRelay;
-
+bool boot;
 #ifndef DEBUG
 DigitalOut relay(P0_8);
 #endif
@@ -76,16 +79,17 @@
         } else {
             DBG("NO SUCH LUCK...\r\n");
         }
-    } if((params->handle == securityServicePtr->getKeyHandle()) && (params->len > 0)) {
+    } if(boot && (params->handle == securityServicePtr->getKeyHandle()) && (params->len > 0)) {
         securityServicePtr->setKey((char *) params->data);    
     }
-    securityServicePtr->bootComplete();
+    boot = false;
 }
 
 int main(void)
 {
     DBG("Garagem v0\r\n");
 
+    boot = true;
     actuatedLED  = true;
     #ifndef DEBUG
     relay = 0;
@@ -109,15 +113,16 @@
     uint16_t minorNumber = 1423;
     uint16_t txPower     = 0xBE;
     iBeacon ibeacon(ble, uuid, majorNumber, minorNumber, txPower);
+
+    DeviceInformationService deviceInfo(ble, "diogogomes.com", DEVICE_NAME, "SN1", "hw-rev1", "fw-rev1", "soft-rev1");
     
     GaragemService garagemService(ble);
     garagemServicePtr = &garagemService;
     
-    SecurityService securityService(ble, SHARED_KEY);
+    SecurityService securityService(ble);
+    securityService.init(SHARED_KEY);
     securityServicePtr = &securityService;
 
-    DeviceInformationService deviceInfo(ble, "diogogomes.com", DEVICE_NAME, "SN1", "hw-rev1", "fw-rev1", "soft-rev1");
-
     /* setup advertising */
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));