![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Runlock POC code
Dependencies: BLE_API mbed nRF51822
Fork of BLE_GATT_Example by
Diff: main.cpp
- Revision:
- 19:477567297aac
- Parent:
- 17:32973972d2dd
- Child:
- 20:fcc752d401ec
diff -r 32973972d2dd -r 477567297aac main.cpp --- a/main.cpp Thu Apr 02 18:30:24 2015 +0000 +++ b/main.cpp Tue Oct 20 13:41:38 2015 +0000 @@ -1,8 +1,8 @@ #include "mbed.h" -#include "BLEDevice.h" +#include "ble/BLE.h" -BLEDevice ble; -DigitalOut led(LED1); +BLE ble; +DigitalOut led(LED1, 1); uint16_t customServiceUUID = 0xA000; uint16_t readCharUUID = 0xA001; uint16_t writeCharUUID = 0xA002; @@ -24,61 +24,62 @@ /* * Restart advertising when phone app disconnects -*/ -void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) +*/ +void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *) { - ble.startAdvertising(); + ble.gap().startAdvertising(); } -/* +/* * handle writes to writeCharacteristic */ -void writeCharCallback(const GattCharacteristicWriteCBParams *params) +void writeCharCallback(const GattWriteCallbackParams *params) { // check to see what characteristic was written, by handle - if(params->charHandle == writeChar.getValueHandle()) { + if(params->handle == writeChar.getValueHandle()) { // toggle LED if only 1 byte is written if(params->len == 1) { led = params->data[0]; - (params->data[0] == 0x00) ? printf("\n\rled on ") : printf("\n\rled off "); // print led toggle + (params->data[0] == 0x00) ? printf("led on\n\r") : printf("led off\n\r"); // print led toggle } // print the data if more than 1 byte is written else { - printf("\n\r Data received: length = %d, data = 0x",params->len); + printf("Data received: length = %d, data = 0x",params->len); for(int x=0; x < params->len; x++) { - printf("%x",params->data[x]); + printf("%x", params->data[x]); } + printf("\n\r"); } // update the readChar with the value of writeChar - ble.updateCharacteristicValue(readChar.getValueHandle(),params->data,params->len); + ble.updateCharacteristicValue(readChar.getValueHandle(), params->data,params->len); } } /* * main loop -*/ +*/ int main(void) { /* initialize stuff */ printf("\n\r********* Starting Main Loop *********\n\r"); ble.init(); - ble.onDisconnection(disconnectionCallback); - ble.onDataWritten(writeCharCallback); + ble.gap().onDisconnection(disconnectionCallback); + ble.gattServer().onDataWritten(writeCharCallback); /* setup advertising */ - ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT - ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type - ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name - ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet - ble.setAdvertisingInterval(100); // 100ms. + ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT + ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type + ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name + ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet + ble.gap().setAdvertisingInterval(100); // 100ms. // add our custom service ble.addService(customService); // start advertising - ble.startAdvertising(); - + ble.gap().startAdvertising(); + // infinite loop waiting for BLE interrupt events while (true) { ble.waitForEvent(); //Save power