abc
Fork of BLE_API by
Diff: public/Gap.h
- Revision:
- 407:ca6b956b33d1
- Parent:
- 406:cec6778acc66
- Child:
- 413:7a295e110b77
--- a/public/Gap.h Mon May 18 09:54:27 2015 +0100 +++ b/public/Gap.h Mon May 18 09:54:27 2015 +0100 @@ -172,7 +172,6 @@ virtual ble_error_t setAdvertisingData(const GapAdvertisingData &, const GapAdvertisingData &) = 0; virtual ble_error_t startAdvertising(const GapAdvertisingParams &) = 0; virtual ble_error_t stopAdvertising(void) = 0; - virtual ble_error_t startScan(const GapScanningParams &scanningParams, void (*callback)(const AdvertisementCallbackParams_t *params)) = 0; virtual ble_error_t stopScan() = 0; virtual uint16_t getMinAdvertisingInterval(void) const = 0; virtual uint16_t getMinNonConnectableAdvertisingInterval(void) const = 0; @@ -190,7 +189,32 @@ virtual ble_error_t setAppearance(uint16_t appearance) = 0; virtual ble_error_t getAppearance(uint16_t *appearanceP) = 0; + ble_error_t startScan(const GapScanningParams &scanningParams, void (*callback)(const AdvertisementCallbackParams_t *params)) { + ble_error_t err = BLE_ERROR_NONE; + if (callback) { + if ((err = startRadioScan(scanningParams)) == BLE_ERROR_NONE) { + onAdvertisementReport.attach(callback); + } + } + + return err; + } + + template<typename T> + ble_error_t startScan(const GapScanningParams &scanningParams, T *object, void (T::*callbackMember)(const AdvertisementCallbackParams_t *params)) { + ble_error_t err = BLE_ERROR_NONE; + if (object && callbackMember) { + if ((err = startRadioScan(scanningParams)) == BLE_ERROR_NONE) { + onAdvertisementReport.attach(object, callbackMember); + } + } + + return err; + } + protected: + virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams) = 0; + /* Event callback handlers */ void setOnTimeout(EventCallback_t callback) {onTimeout = callback;} void setOnConnection(ConnectionEventCallback_t callback) {onConnection = callback;}