Lancaster University's fork of the mbed BLE API. Lives on github, https://github.com/lancaster-university/BLE_API
Dependents: microbit-dal microbit-dal microbit-ble-open microbit-dal ... more
Fork of BLE_API by
Revision 875:25480c83e3cc, committed 2015-11-03
- Comitter:
- rgrover1
- Date:
- Tue Nov 03 12:51:24 2015 +0000
- Parent:
- 874:0607a58418ce
- Child:
- 876:f7e9b70920ad
- Commit message:
- Synchronized with git rev 1f30b48a
Author: Rohit Grover
fix the build error resulting from missing template instantiation in the case <object,member> tuple was used for BLE::init()
Changed in this revision
ble/BLE.h | Show annotated file Show diff for this revision Revisions of this file |
source/BLE.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/ble/BLE.h Tue Nov 03 12:51:24 2015 +0000 +++ b/ble/BLE.h Tue Nov 03 12:51:24 2015 +0000 @@ -22,6 +22,8 @@ #include "GattServer.h" #include "GattClient.h" +#include "ble/FunctionPointerWithContext.h" + #ifdef YOTTA_CFG_MBED_OS #include "mbed-drivers/mbed_error.h" #else @@ -75,7 +77,7 @@ * context where ordering is compiler specific and can't be guaranteed--it * is safe to call BLE::init() from within main(). * - * @param callback + * @param initCompleteCallback * A callback for when initialization completes for a BLE * instance. This is an optional parameter, if no callback is * setup the application can still determine the status of @@ -100,14 +102,20 @@ * function-pointer, init() can also take an <Object, member> tuple as its * callback target. */ - ble_error_t init(InitializationCompleteCallback_t callback = NULL); + ble_error_t init(InitializationCompleteCallback_t initCompleteCallback = NULL) { + FunctionPointerWithContext<InitializationCompleteCallbackContext *> callback(initCompleteCallback); + initImplementation(callback); + } /** * An alternate declaration for init(). This one takes an <Object, member> tuple as its * callback target. */ template<typename T> - ble_error_t init(T *object, void (T::*initCompleteCallback)(InitializationCompleteCallbackContext *context)); + ble_error_t init(T *object, void (T::*initCompleteCallback)(InitializationCompleteCallbackContext *context)) { + FunctionPointerWithContext<InitializationCompleteCallbackContext *> callback(object, initCompleteCallback); + initImplementation(callback); + } /** * @return true if initialization has completed for the underlying BLE @@ -1413,6 +1421,9 @@ } private: + ble_error_t BLE::initImplementation(FunctionPointerWithContext<InitializationCompleteCallbackContext *> callback); + +private: BLE(const BLE&); BLE &operator=(const BLE &);
--- a/source/BLE.cpp Tue Nov 03 12:51:24 2015 +0000 +++ b/source/BLE.cpp Tue Nov 03 12:51:24 2015 +0000 @@ -22,28 +22,8 @@ #endif ble_error_t -BLE::init(BLE::InitializationCompleteCallback_t initCompleteCallback) +BLE::initImplementation(FunctionPointerWithContext<InitializationCompleteCallbackContext *> callback) { - FunctionPointerWithContext<InitializationCompleteCallbackContext *>callback(initCompleteCallback); - ble_error_t err = transport->init(instanceID, callback); - if (err != BLE_ERROR_NONE) { - return err; - } - - /* Platforms enabled for DFU should introduce the DFU Service into - * applications automatically. */ -#if defined(TARGET_OTA_ENABLED) - static DFUService dfu(*this); // defined static so that the object remains alive -#endif // TARGET_OTA_ENABLED - - return BLE_ERROR_NONE; -} - -template <typename T> -ble_error_t -BLE::init(T *object, void (T::*initCompleteCallback)(InitializationCompleteCallbackContext *)) -{ - FunctionPointerWithContext<InitializationCompleteCallbackContext *>callback(object, initCompleteCallback); ble_error_t err = transport->init(instanceID, callback); if (err != BLE_ERROR_NONE) { return err;