BLE code for touch signal

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_GATT_Example by Bluetooth Low Energy

Committer:
mbedAustin
Date:
Sat Feb 14 15:49:47 2015 +0000
Revision:
6:97b22b5bfbb8
Parent:
5:d0548c64e2e7
Child:
7:f6814152873c
added writeCharCallback handler, now when something is written we can handle it

Who changed what in which revision?

UserRevisionLine numberNew 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 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 3:0fb60f81f693 42 }
mbedAustin 0:cd5b6733aeb1 43
mbedAustin 0:cd5b6733aeb1 44 int
mbedAustin 0:cd5b6733aeb1 45 main(void)
mbedAustin 0:cd5b6733aeb1 46 {
mbedAustin 1:94152e7d8b5c 47 led = 0; // turn LED off
mbedAustin 2:e84c13abc479 48 ble.init();
mbedAustin 2:e84c13abc479 49 ble.onDisconnection(disconnectionCallback);
mbedAustin 4:7ef90665b399 50 ble.onDataWritten(writeCharCallback); //TODO: this is not correct, figure out correct syntax
mbedAustin 2:e84c13abc479 51
mbedAustin 2:e84c13abc479 52 /* setup advertising */
mbedAustin 2:e84c13abc479 53 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
mbedAustin 2:e84c13abc479 54 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
mbedAustin 2:e84c13abc479 55 ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
mbedAustin 2:e84c13abc479 56 ble.startAdvertising(); // start advertising
mbedAustin 2:e84c13abc479 57
mbedAustin 2:e84c13abc479 58 ble.addService(customService); // Add our custom service to device
mbedAustin 2:e84c13abc479 59
mbedAustin 2:e84c13abc479 60 while (true) {
mbedAustin 2:e84c13abc479 61 ble.waitForEvent(); //Save power
mbedAustin 2:e84c13abc479 62 }
mbedAustin 2:e84c13abc479 63
mbedAustin 1:94152e7d8b5c 64
mbedAustin 1:94152e7d8b5c 65 // TODO: impliment the rest of triggering for LED based on Write of characteristic.
mbedAustin 1:94152e7d8b5c 66 // TODO: impliment a read characteristic that sends text back to app
mbedAustin 1:94152e7d8b5c 67 // take a look at http://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_GroveColourSensor/file/000c8f8c7f03/main.cpp for inspiration.
mbedAustin 0:cd5b6733aeb1 68 }