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@7:f6814152873c, 2015-03-09 (annotated)
- Committer:
- mbedAustin
- Date:
- Mon Mar 09 15:25:43 2015 +0000
- Revision:
- 7:f6814152873c
- Parent:
- 6:97b22b5bfbb8
- Child:
- 8:60ede963dfe2
changed default name to match Evothings Example, added UUID's to braodcast in advertising packet
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 | 7:f6814152873c | 12 | const static char DEVICE_NAME[] = "ChangeMe!!"; // change this |
mbedAustin | 7:f6814152873c | 13 | static const uint16_t uuid16_list[] = {0xFFFF}; //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 | 7:f6814152873c | 36 | // handle writes to writeCharacteristic |
mbedAustin | 4:7ef90665b399 | 37 | void writeCharCallback(const GattCharacteristicWriteCBParams *params) |
mbedAustin | 3:0fb60f81f693 | 38 | { |
mbedAustin | 5:d0548c64e2e7 | 39 | led = params->data[0]; |
mbedAustin | 5:d0548c64e2e7 | 40 | printf("LED Written To, value=%x",params->data[0]); |
mbedAustin | 6:97b22b5bfbb8 | 41 | // TODO: update the readChar value to match write char, or better yet give it an english value |
mbedAustin | 7:f6814152873c | 42 | // TODO: update with info from here : http://developer.mbed.org/forum/team-63-Bluetooth-Low-Energy-community/topic/5502/ |
mbedAustin | 3:0fb60f81f693 | 43 | } |
mbedAustin | 0:cd5b6733aeb1 | 44 | |
mbedAustin | 0:cd5b6733aeb1 | 45 | int |
mbedAustin | 0:cd5b6733aeb1 | 46 | main(void) |
mbedAustin | 0:cd5b6733aeb1 | 47 | { |
mbedAustin | 7:f6814152873c | 48 | led = 1; // turn LED off |
mbedAustin | 2:e84c13abc479 | 49 | ble.init(); |
mbedAustin | 2:e84c13abc479 | 50 | ble.onDisconnection(disconnectionCallback); |
mbedAustin | 4:7ef90665b399 | 51 | ble.onDataWritten(writeCharCallback); //TODO: this is not correct, figure out correct syntax |
mbedAustin | 2:e84c13abc479 | 52 | |
mbedAustin | 2:e84c13abc479 | 53 | /* setup advertising */ |
mbedAustin | 7:f6814152873c | 54 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT |
mbedAustin | 7:f6814152873c | 55 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type |
mbedAustin | 7:f6814152873c | 56 | ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name |
mbedAustin | 7:f6814152873c | 57 | ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet |
mbedAustin | 2:e84c13abc479 | 58 | ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ |
mbedAustin | 7:f6814152873c | 59 | |
mbedAustin | 2:e84c13abc479 | 60 | |
mbedAustin | 2:e84c13abc479 | 61 | ble.addService(customService); // Add our custom service to device |
mbedAustin | 2:e84c13abc479 | 62 | |
mbedAustin | 7:f6814152873c | 63 | ble.startAdvertising(); // start advertising |
mbedAustin | 2:e84c13abc479 | 64 | while (true) { |
mbedAustin | 2:e84c13abc479 | 65 | ble.waitForEvent(); //Save power |
mbedAustin | 2:e84c13abc479 | 66 | } |
mbedAustin | 2:e84c13abc479 | 67 | |
mbedAustin | 1:94152e7d8b5c | 68 | |
mbedAustin | 1:94152e7d8b5c | 69 | // TODO: impliment the rest of triggering for LED based on Write of characteristic. |
mbedAustin | 1:94152e7d8b5c | 70 | // TODO: impliment a read characteristic that sends text back to app |
mbedAustin | 1:94152e7d8b5c | 71 | // take a look at http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_GroveColourSensor/file/000c8f8c7f03/main.cpp for inspiration. |
mbedAustin | 0:cd5b6733aeb1 | 72 | } |