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@4:7ef90665b399, 2015-02-14 (annotated)
- Committer:
- mbedAustin
- Date:
- Sat Feb 14 15:27:51 2015 +0000
- Revision:
- 4:7ef90665b399
- Parent:
- 3:0fb60f81f693
- Child:
- 5:d0548c64e2e7
it compiles!!!!
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 | 3:0fb60f81f693 | 36 | // This function is called whenever someone writes something to the writeCharacteristic |
mbedAustin | 4:7ef90665b399 | 37 | void writeCharCallback(const GattCharacteristicWriteCBParams *params) |
mbedAustin | 3:0fb60f81f693 | 38 | { |
mbedAustin | 3:0fb60f81f693 | 39 | //TODO: when character is written here change the LED, update the read characteristic, and print out to console |
mbedAustin | 3:0fb60f81f693 | 40 | } |
mbedAustin | 0:cd5b6733aeb1 | 41 | |
mbedAustin | 0:cd5b6733aeb1 | 42 | int |
mbedAustin | 0:cd5b6733aeb1 | 43 | main(void) |
mbedAustin | 0:cd5b6733aeb1 | 44 | { |
mbedAustin | 1:94152e7d8b5c | 45 | led = 0; // turn LED off |
mbedAustin | 2:e84c13abc479 | 46 | ble.init(); |
mbedAustin | 2:e84c13abc479 | 47 | ble.onDisconnection(disconnectionCallback); |
mbedAustin | 4:7ef90665b399 | 48 | ble.onDataWritten(writeCharCallback); //TODO: this is not correct, figure out correct syntax |
mbedAustin | 2:e84c13abc479 | 49 | |
mbedAustin | 2:e84c13abc479 | 50 | /* setup advertising */ |
mbedAustin | 2:e84c13abc479 | 51 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); |
mbedAustin | 2:e84c13abc479 | 52 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
mbedAustin | 2:e84c13abc479 | 53 | ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ |
mbedAustin | 2:e84c13abc479 | 54 | ble.startAdvertising(); // start advertising |
mbedAustin | 2:e84c13abc479 | 55 | |
mbedAustin | 2:e84c13abc479 | 56 | ble.addService(customService); // Add our custom service to device |
mbedAustin | 2:e84c13abc479 | 57 | |
mbedAustin | 2:e84c13abc479 | 58 | while (true) { |
mbedAustin | 2:e84c13abc479 | 59 | ble.waitForEvent(); //Save power |
mbedAustin | 2:e84c13abc479 | 60 | } |
mbedAustin | 2:e84c13abc479 | 61 | |
mbedAustin | 1:94152e7d8b5c | 62 | |
mbedAustin | 1:94152e7d8b5c | 63 | // TODO: impliment the rest of triggering for LED based on Write of characteristic. |
mbedAustin | 1:94152e7d8b5c | 64 | // TODO: impliment a read characteristic that sends text back to app |
mbedAustin | 1:94152e7d8b5c | 65 | // take a look at http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_GroveColourSensor/file/000c8f8c7f03/main.cpp for inspiration. |
mbedAustin | 0:cd5b6733aeb1 | 66 | } |