Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem USBDevice
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();
}
}