This fork is functionally identical to the main path, but has been updated to reflect changes in the library APIs, so this code now builds straight "out of the box" without needing modifications
Dependencies: BLE_API mbed nRF51822
Fork of BLE_GATT_Example by
main.cpp@2:e84c13abc479, 2015-02-14 (annotated)
- Committer:
- mbedAustin
- Date:
- Sat Feb 14 14:48:29 2015 +0000
- Revision:
- 2:e84c13abc479
- Parent:
- 1:94152e7d8b5c
- Child:
- 3:0fb60f81f693
further updates to the example program, still incomplete
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedAustin | 0:cd5b6733aeb1 | 1 | #include "mbed.h" |
mbedAustin | 0:cd5b6733aeb1 | 2 | #include "BLEDevice.h" |
mbedAustin | 1:94152e7d8b5c | 3 | #include "CustomService.h" |
mbedAustin | 1:94152e7d8b5c | 4 | |
mbedAustin | 1:94152e7d8b5c | 5 | |
mbedAustin | 1:94152e7d8b5c | 6 | // BLE object |
mbedAustin | 1:94152e7d8b5c | 7 | BLEDevice ble; |
mbedAustin | 1:94152e7d8b5c | 8 | |
mbedAustin | 1:94152e7d8b5c | 9 | // LED object |
mbedAustin | 1:94152e7d8b5c | 10 | DigitalOut led(LED1); |
mbedAustin | 1:94152e7d8b5c | 11 | |
mbedAustin | 1:94152e7d8b5c | 12 | const static char DEVICE_NAME[] = "MyDeviceName"; // change this |
mbedAustin | 1:94152e7d8b5c | 13 | static const uint16_t uuid16_list[] = {0xFF}; //Custom UUID, FF is reserved for development |
mbedAustin | 1:94152e7d8b5c | 14 | |
mbedAustin | 2:e84c13abc479 | 15 | // Set Up Characteristics |
mbedAustin | 2:e84c13abc479 | 16 | static uint8_t readValue[1] = {0x00}; |
mbedAustin | 2:e84c13abc479 | 17 | GattCharacteristic readChar(0xAAAA /* read char UUID*/, readValue, sizeof(readValue), sizeof(readValue), |
mbedAustin | 2:e84c13abc479 | 18 | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY); |
mbedAustin | 2:e84c13abc479 | 19 | |
mbedAustin | 2:e84c13abc479 | 20 | static uint8_t writeValue[1] = {0x00}; |
mbedAustin | 2:e84c13abc479 | 21 | GattCharacteristic writeChar(0xBBBB /*write char UUID*/, writeValue, sizeof(writeValue), sizeof(writeValue), |
mbedAustin | 2:e84c13abc479 | 22 | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY); |
mbedAustin | 2:e84c13abc479 | 23 | |
mbedAustin | 2:e84c13abc479 | 24 | GattCharacteristic *characteristics[] = {&readChar, &writeChar}; |
mbedAustin | 2:e84c13abc479 | 25 | |
mbedAustin | 2:e84c13abc479 | 26 | // Set up custom service |
mbedAustin | 2:e84c13abc479 | 27 | GattService customService(0x221D /*Service UUID*/, characteristics, sizeof(characteristics) / sizeof(GattCharacteristic *)); |
mbedAustin | 2:e84c13abc479 | 28 | |
mbedAustin | 2:e84c13abc479 | 29 | |
mbedAustin | 1:94152e7d8b5c | 30 | // Restart advertising when phone app disconnects |
mbedAustin | 1:94152e7d8b5c | 31 | void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) |
mbedAustin | 1:94152e7d8b5c | 32 | { |
mbedAustin | 1:94152e7d8b5c | 33 | ble.startAdvertising(); // restart advertising |
mbedAustin | 1:94152e7d8b5c | 34 | } |
mbedAustin | 0:cd5b6733aeb1 | 35 | |
mbedAustin | 0:cd5b6733aeb1 | 36 | |
mbedAustin | 0:cd5b6733aeb1 | 37 | int |
mbedAustin | 0:cd5b6733aeb1 | 38 | main(void) |
mbedAustin | 0:cd5b6733aeb1 | 39 | { |
mbedAustin | 1:94152e7d8b5c | 40 | led = 0; // turn LED off |
mbedAustin | 2:e84c13abc479 | 41 | ble.init(); |
mbedAustin | 2:e84c13abc479 | 42 | ble.onDisconnection(disconnectionCallback); |
mbedAustin | 2:e84c13abc479 | 43 | |
mbedAustin | 2:e84c13abc479 | 44 | /* setup advertising */ |
mbedAustin | 2:e84c13abc479 | 45 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); |
mbedAustin | 2:e84c13abc479 | 46 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
mbedAustin | 2:e84c13abc479 | 47 | ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ |
mbedAustin | 2:e84c13abc479 | 48 | ble.startAdvertising(); // start advertising |
mbedAustin | 2:e84c13abc479 | 49 | |
mbedAustin | 2:e84c13abc479 | 50 | ble.addService(customService); // Add our custom service to device |
mbedAustin | 2:e84c13abc479 | 51 | |
mbedAustin | 2:e84c13abc479 | 52 | while (true) { |
mbedAustin | 2:e84c13abc479 | 53 | ble.waitForEvent(); //Save power |
mbedAustin | 2:e84c13abc479 | 54 | } |
mbedAustin | 2:e84c13abc479 | 55 | |
mbedAustin | 1:94152e7d8b5c | 56 | |
mbedAustin | 1:94152e7d8b5c | 57 | // TODO: impliment the rest of triggering for LED based on Write of characteristic. |
mbedAustin | 1:94152e7d8b5c | 58 | // TODO: impliment a read characteristic that sends text back to app |
mbedAustin | 1:94152e7d8b5c | 59 | // take a look at http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_GroveColourSensor/file/000c8f8c7f03/main.cpp for inspiration. |
mbedAustin | 0:cd5b6733aeb1 | 60 | } |