test 4

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_EvothingsExample_GATT by Austin Blackstone

Committer:
mbedAustin
Date:
Sat Feb 14 15:25:00 2015 +0000
Revision:
3:0fb60f81f693
Parent:
2:e84c13abc479
Child:
4:7ef90665b399
Full skeleton in place, not working

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 3:0fb60f81f693 37 void writeCharCallback(//TODO, fill this in)
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 3:0fb60f81f693 48 ble.onDataWritten(customService.writeChar,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 }