Example program for BLE devices using updated Puck library.
Fork of location-puck by
Diff: main.cpp
- Revision:
- 3:4cb285fb29e7
- Parent:
- 2:67d603617000
- Child:
- 4:4324d5acd5d8
--- a/main.cpp Thu Jun 19 10:47:28 2014 +0200 +++ b/main.cpp Thu Jun 19 11:17:30 2014 +0200 @@ -1,48 +1,52 @@ #include <mbed.h> +#include <nRF51822.h> -DigitalOut led1(LED1); -DigitalOut led2(LED2); +#define DEBUG 1 -void clear() { - led1 = 0; - led2 = 0; -} +#ifdef DEBUG + #define LOG(args...) pc.printf(args) +#else + #define LOG(args...) +#endif -void cycle(float delta) { - clear(); - led1 = 1; - wait(delta); +nRF51822n nrf; +DigitalOut led1(p1); +DigitalOut advertisiingStateLed(p30); - clear(); - led1 = 1; - wait(delta); - - clear(); - led2 = 1; - wait(delta); - - clear(); - led2 = 1; - wait(delta); -} +GapAdvertisingData advData; +GapAdvertisingData scanResponse; +GapAdvertisingParams advParams(GapAdvertisingOParams::ADV_CONNECTABLE_UNDIRECTED); -void drums(float delta) { - clear(); - led1 = 1; - wait(delta); +class GapEventHandler : public GapEvents { + virtual void onConnected(void) { + advertisingStateLed = 0; + LOG("Connected!\n\r"); + } - clear(); - led2 = 1; - wait(delta); - - clear(); - led2 = 1; - wait(delta); + virtual void onDisconnected(void) { + nrf.getGap().startAdvertising(advParams); + advertisingStateLed = 1; + LOG("Disconnected!\n\r"); + LOG("Restarting the advertising process\n\r"); + } } int main() { - while(1) { - drums(0.3); - cycle(0.3); + nrf.getGap().setEventHandler(new GapEventHandler()); + + nrf.init(); + nrf.reset(); + + advData.addFlags(GapAdvertisingData::BREDR_NOT_SUPPORTED); + advData.addData(GapAdvertisingData::SHORTENED_LOCAL_NAME, + (uint8_t*)"phlemz", sizeof("phlemz") - 1); + advData.addAppearance(GapAdvertisingData::UNKNOWN); + nrf.getGap().setAdvertisingData(advData. scanResponse); + + nrf.getGap().startAdvertising(advParams); + + for(;;) { + led1 = !led1; + wait(1); } }