SimpleBle-Example on mbed-os 5
Dependencies: SimpleBLE mbed nRF51822
Fork of SimpleBLE-Example by
main.cpp
- Committer:
- janjongboom
- Date:
- 2016-05-11
- Revision:
- 0:ba1c49874d3c
- Child:
- 2:12a235e7691a
File content as of revision 0:ba1c49874d3c:
/** * This is an example program that's using the SimpleBLE library * to expose some variables to the outside world using BLE. * Written by Jan Jongboom (jan.jongboom@arm.com) */ #include "mbed.h" #include "SimpleBLE.h" // The first thing we need to do is create a SimpleBLE instance: // * first argument is the device name // * second is the advertisement interval in ms. (default 1000 ms.) SimpleBLE ble("DEVICE_NAME", 1000); // Now we can declare some variables that we want to expose. // After you created the variable you can use it like any other var, // but it's value will be automatically updated over Bluetooth! // F.e. here we declare service 0x180d (heartrate), char 0x2a37 (curr. value) as uint8_t SimpleChar<uint8_t> heartrate = ble.readOnly<uint8_t>(0x180D, 0x2A37, true /* notify */, 100 /* default value */); // now we can use this variable everywhere in our code like a normal uint8_t void updateHeartrate() { // we just loop between 100 and 180 heartrate = heartrate + 1; if (heartrate > 180) { heartrate = 100; } } // And here we create a custom service (0x9310) and char (0x9311) with a callback void callback(uint32_t newValue) { // whenever someone updates this var over Bluetooth, this function will be called printf("My value was updated to %d\n", newValue); } // FYI, you can also use UUIDs here instead of short services :-) SimpleChar<uint32_t> writeMe = ble.readWrite<uint32_t>(0x9310, 0x9311, &callback); int main(int, char**) { // update the heart rate every second Ticker t; t.attach(updateHeartrate, 1.0f); // here's how we kick off our loop ble.start(); while (1) { ble.waitForEvent(); } }