BLE Nano LED control

Dependencies:   BLE_API mbed nRF51822

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "ble/BLE.h"
00003 #include "ble_nanoled_service.h"
00004 
00005 namespace {
00006     const char DEVICE_NAME[] = "BLE Nano";
00007 }
00008 
00009 namespace {
00010     BLE             mBle;
00011     ServiceUart     mServiceUart;
00012 }
00013 
00014 
00015 namespace {
00016     inline int calcAdvertisingIntervalMs(int msec)
00017     {
00018         return 1000 * msec / 625;
00019     }
00020 }
00021 
00022 
00023 namespace {
00024     void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
00025     {
00026         mBle.gap().startAdvertising();
00027     }
00028 
00029 
00030     void writtenHandler(const GattWriteCallbackParams* params)
00031     {
00032         mServiceUart.writtenHandler(mBle, params);
00033     }
00034     
00035     void readHandler(const GattReadCallbackParams* params)
00036     {
00037         mServiceUart.readHandler(mBle, params);
00038     }
00039 }
00040 
00041 
00042 int main(void)
00043 {
00044     mBle.init();
00045     mBle.onDisconnection(disconnectionCallback);
00046     mBle.onDataWritten(writtenHandler);
00047     mBle.onDataRead(readHandler);
00048 
00049     //services
00050     mServiceUart.addService(mBle);
00051 
00052     // setup advertising
00053     mBle.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
00054     mBle.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
00055     mBle.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
00056                                      (const uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME) - 1);
00057     // 100ms; in multiples of 0.625ms.
00058     mBle.setAdvertisingInterval(calcAdvertisingIntervalMs(100));
00059     mBle.startAdvertising();
00060 
00061     while (true) {
00062         mBle.waitForEvent();
00063     }
00064 }
00065