Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BLE_API by
Revision 407:ca6b956b33d1, committed 2015-05-18
- Comitter:
- rgrover1
- Date:
- Mon May 18 09:54:27 2015 +0100
- Parent:
- 406:cec6778acc66
- Child:
- 408:388570b048a7
- Commit message:
- Synchronized with git rev bee91cab
Author: Rohit Grover
enable <object,callbackMember> context for startScan.
Changed in this revision
| public/BLEDevice.h | Show annotated file Show diff for this revision Revisions of this file |
| public/Gap.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/public/BLEDevice.h Mon May 18 09:54:27 2015 +0100
+++ b/public/BLEDevice.h Mon May 18 09:54:27 2015 +0100
@@ -272,6 +272,18 @@
ble_error_t startScan(void (*callback)(const Gap::AdvertisementCallbackParams_t *params));
/**
+ * Start scanning (Observer Procedure) based on the scan-params currently
+ * in effect.
+ *
+ * @param[in] object
+ * @param[in] callbackMember
+ * The above pair of parameters define the callback object
+ * and member function to receive the advertisement params.
+ */
+ template<typename T>
+ ble_error_t startScan(T *object, void (T::*memberCallback)(const Gap::AdvertisementCallbackParams_t *params));
+
+ /**
* Stop scanning. The current scanning parameters remain in effect.
*
* @retval BLE_ERROR_NONE if successfully stopped scanning procedure.
@@ -787,6 +799,12 @@
return transport->getGap().startScan(scanningParams, callback);
}
+template<typename T>
+inline ble_error_t
+BLEDevice::startScan(T *object, void (T::*memberCallback)(const Gap::AdvertisementCallbackParams_t *params)) {
+ return transport->getGap().startScan(scanningParams, object, memberCallback);
+}
+
inline ble_error_t
BLEDevice::stopScan(void) {
return transport->getGap().stopScan();
--- 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;}
