A blue button is always a nice toy ...
Dependencies: BLE_API X_NUCLEO_IDB0XA1 mbed
Fork of BLE_HeartRate_IDB0XA1 by
bricks/init.cpp
- Committer:
- hux
- Date:
- 2017-10-01
- Revision:
- 29:a6b74dfdd5f2
File content as of revision 29:a6b74dfdd5f2:
// init.cpp - initialize BLE system #include "bricks/init.h" #include "bricks/blinker.h" #include "bricks/trace.h" static void (*cbSetup)(O&o) = 0; // setup callback static void (*cbError)(O&o) = 0; // error callback static void cbDefaultError(O&o) // default error handler { Blinker blink; blink.error(); // 'error' blink sequence } static void cbDefaultComplete(O&o) // default error handler { // empty } static void initComplete(BLE::InitializationCompleteCallbackContext *params) { Blob o; // setup a blob o.pComplete = params; // store to provide access // params->error = (ble_error_t)((int)BLE_ERROR_NONE+1); // uncomment for debug trace(o,2,"<initialized>\n"); if (params->error != BLE_ERROR_NONE) { trace(o,0,"error\n"); if (cbError) (*cbError)(o); // handle error in follow-up return; } // Ensure that it is the default instance of BLE if(o.getInstanceID() != BLE::DEFAULT_INSTANCE) { return; } (*cbSetup)(o); // followup with setup } void init(O&o, void (*scb)(O&o),void (*ecb)(O&o)) // init BLE system { cbSetup = scb; // store setup callback cbError = ecb; // store error callback o.init(initComplete); } void init(O&o, void (*scb)(O&o)) // initialize BLE system { init(o,scb,cbDefaultError); // continue with default error callback } void init(O&o) // initialize BLE system { init(o,cbDefaultComplete,cbDefaultError); while (!o.hasInitialized()) { trace(o,1,"waiting for initialized BLE!\n"); wait_ms(200); } }