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 674:923c47bd1547, committed 2015-06-19
- Comitter:
- rgrover1
- Date:
- Fri Jun 19 15:53:02 2015 +0100
- Parent:
- 673:9da6855eba1c
- Child:
- 675:30aab0f789f6
- Commit message:
- Synchronized with git rev e74eb3b4
Author: Rohit Grover
moved GAP related members out of BLE and into GAP
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/GapScanningParams.cpp Fri Jun 19 15:53:02 2015 +0100
@@ -0,0 +1,75 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2013 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "Gap.h"
+#include "GapScanningParams.h"
+
+GapScanningParams::GapScanningParams(uint16_t interval, uint16_t window, uint16_t timeout, bool activeScanning) :
+ _interval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(interval)),
+ _window(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(window)),
+ _timeout(timeout),
+ _activeScanning(activeScanning) {
+ /* stay within limits */
+ if (_interval < SCAN_INTERVAL_MIN) {
+ _interval = SCAN_INTERVAL_MIN;
+ }
+ if (_interval > SCAN_INTERVAL_MAX) {
+ _interval = SCAN_INTERVAL_MAX;
+ }
+ if (_window < SCAN_WINDOW_MIN) {
+ _window = SCAN_WINDOW_MIN;
+ }
+ if (_window > SCAN_WINDOW_MAX) {
+ _window = SCAN_WINDOW_MAX;
+ }
+}
+
+ble_error_t
+GapScanningParams::setInterval(uint16_t newIntervalInMS)
+{
+ uint16_t newInterval = Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(newIntervalInMS);
+ if ((newInterval >= SCAN_INTERVAL_MIN) && (newInterval < SCAN_INTERVAL_MAX)) {
+ _interval = newInterval;
+ return BLE_ERROR_NONE;
+ }
+
+ return BLE_ERROR_PARAM_OUT_OF_RANGE;
+}
+
+ble_error_t
+GapScanningParams::setWindow(uint16_t newWindowInMS)
+{
+ uint16_t newWindow = Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(newWindowInMS);
+ if ((newWindow >= SCAN_WINDOW_MIN) && (newWindow < SCAN_WINDOW_MAX)) {
+ _window = newWindow;
+ return BLE_ERROR_NONE;
+ }
+
+ return BLE_ERROR_PARAM_OUT_OF_RANGE;
+}
+
+ble_error_t
+GapScanningParams::setTimeout(uint16_t newTimeout)
+{
+ _timeout = newTimeout;
+ return BLE_ERROR_NONE;
+}
+
+void
+GapScanningParams::setActiveScanning(bool activeScanning)
+{
+ _activeScanning = activeScanning;
+}
\ No newline at end of file
--- a/public/BLE.h Fri Jun 19 15:53:02 2015 +0100
+++ b/public/BLE.h Fri Jun 19 15:53:02 2015 +0100
@@ -23,11 +23,6 @@
#include "GattClient.h"
#include "BLEInstanceBase.h"
-#include "GapAdvertisingData.h"
-#include "GapAdvertisingParams.h"
-#include "GapScanningParams.h"
-
-
/**
* The base class used to abstract away BLE capable radio transceivers or SOCs,
* to enable this BLE API to work with any radio transparently.
@@ -55,6 +50,7 @@
*/
ble_error_t shutdown(void);
+ /* Accessors to GAP. Please refer to Gap.h for GAP related functionality. */
const Gap &gap() const {
return transport->getGap();
}
@@ -62,8 +58,8 @@
return transport->getGap();
}
+public:
/* GAP specific APIs */
-public:
/**
* Set the BTLE MAC address and type.
* @return BLE_ERROR_NONE on success.
@@ -719,23 +715,12 @@
void terminateServiceDiscovery(void);
public:
- BLE() : transport(createBLEInstance()), advParams(), advPayload(), scanningParams(), scanResponse(), needToSetAdvPayload(true) {
- advPayload.clear();
- scanResponse.clear();
+ BLE() : transport(createBLEInstance()) {
+ /* empty */
}
private:
BLEInstanceBase *const transport; /* the device specific backend */
-
- GapAdvertisingParams advParams;
- GapAdvertisingData advPayload;
- GapScanningParams scanningParams;
- GapAdvertisingData scanResponse;
-
- /* Accumulation of AD structures in the advertisement payload should
- * eventually result in a call to the target's setAdvertisingData() before
- * the server begins advertising. This flag marks the status of the pending update.*/
- bool needToSetAdvPayload;
};
typedef BLE BLEDevice; /* DEPRECATED. This type alias is retained for the sake of compatibilty with older
@@ -753,26 +738,26 @@
inline ble_error_t
BLE::shutdown(void)
{
- clearAdvertisingPayload();
+ gap().getAdvPayload().clear();
return transport->shutdown();
}
inline ble_error_t
BLE::setAddress(Gap::AddressType_t type, const Gap::Address_t address)
{
- return transport->getGap().setAddress(type, address);
+ return gap().setAddress(type, address);
}
inline ble_error_t
BLE::getAddress(Gap::AddressType_t *typeP, Gap::Address_t address)
{
- return transport->getGap().getAddress(typeP, address);
+ return gap().getAddress(typeP, address);
}
inline void
BLE::setAdvertisingType(GapAdvertisingParams::AdvertisingType advType)
{
- advParams.setAdvertisingType(advType);
+ gap().getAdvParams().setAdvertisingType(advType);
}
inline void
@@ -783,112 +768,103 @@
} else if (interval < getMinAdvertisingInterval()) {
interval = getMinAdvertisingInterval();
}
- advParams.setInterval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(interval));
+ gap().getAdvParams().setInterval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(interval));
}
inline uint16_t
BLE::getMinAdvertisingInterval(void) const {
- return transport->getGap().getMinAdvertisingInterval();
+ return gap().getMinAdvertisingInterval();
}
inline uint16_t
BLE::getMinNonConnectableAdvertisingInterval(void) const {
- return transport->getGap().getMinNonConnectableAdvertisingInterval();
+ return gap().getMinNonConnectableAdvertisingInterval();
}
inline uint16_t
BLE::getMaxAdvertisingInterval(void) const {
- return transport->getGap().getMaxAdvertisingInterval();
+ return gap().getMaxAdvertisingInterval();
}
inline void
BLE::setAdvertisingTimeout(uint16_t timeout)
{
- advParams.setTimeout(timeout);
+ gap().getAdvParams().setTimeout(timeout);
}
inline void
BLE::setAdvertisingParams(const GapAdvertisingParams &newAdvParams)
{
- advParams = newAdvParams;
+ gap().setAdvParams(newAdvParams);
}
inline const GapAdvertisingParams &
BLE::getAdvertisingParams(void) const
{
- return advParams;
+ return gap().getAdvParams();
}
inline void
BLE::clearAdvertisingPayload(void)
{
- needToSetAdvPayload = true;
- advPayload.clear();
+ gap().getAdvPayload().clear();
}
inline ble_error_t
BLE::accumulateAdvertisingPayload(uint8_t flags)
{
- needToSetAdvPayload = true;
- return advPayload.addFlags(flags);
+ return gap().getAdvPayload().addFlags(flags);
}
inline ble_error_t
BLE::accumulateAdvertisingPayload(GapAdvertisingData::Appearance app)
{
- needToSetAdvPayload = true;
- transport->getGap().setAppearance(app);
- return advPayload.addAppearance(app);
+ gap().setAppearance(app);
+ return gap().getAdvPayload().addAppearance(app);
}
inline ble_error_t
BLE::accumulateAdvertisingPayloadTxPower(int8_t txPower)
{
- needToSetAdvPayload = true;
- return advPayload.addTxPower(txPower);
+ return gap().getAdvPayload().addTxPower(txPower);
}
inline ble_error_t
BLE::accumulateAdvertisingPayload(GapAdvertisingData::DataType type, const uint8_t *data, uint8_t len)
{
- needToSetAdvPayload = true;
if (type == GapAdvertisingData::COMPLETE_LOCAL_NAME) {
- transport->getGap().setDeviceName(data);
+ gap().setDeviceName(data);
}
- return advPayload.addData(type, data, len);
+ return gap().getAdvPayload().addData(type, data, len);
}
inline ble_error_t
BLE::accumulateScanResponse(GapAdvertisingData::DataType type, const uint8_t *data, uint8_t len)
{
- needToSetAdvPayload = true;
- return scanResponse.addData(type, data, len);
+ return gap().getScanResponse().addData(type, data, len);
}
inline void
BLE::clearScanResponse(void)
{
- needToSetAdvPayload = true;
- scanResponse.clear();
+ gap().getScanResponse().clear();
}
inline ble_error_t
BLE::setAdvertisingPayload(void) {
- needToSetAdvPayload = false;
- return transport->getGap().setAdvertisingData(advPayload, scanResponse);
+ return gap().setAdvertisingData();
}
inline ble_error_t
BLE::setAdvertisingData(const GapAdvertisingData& newPayload)
{
- advPayload = newPayload;
-
+ gap().getAdvPayload() = newPayload;
return setAdvertisingPayload();
}
inline const GapAdvertisingData &
BLE::getAdvertisingData(void) const {
- return advPayload;
+ return gap().getAdvPayload();
}
inline ble_error_t
@@ -898,28 +874,26 @@
if ((rc = transport->getGattServer().initializeGATTDatabase()) != BLE_ERROR_NONE) {
return rc;
}
- if (needToSetAdvPayload) {
- if ((rc = setAdvertisingPayload()) != BLE_ERROR_NONE) {
- return rc;
- }
+ if ((rc = setAdvertisingPayload()) != BLE_ERROR_NONE) {
+ return rc;
}
- return transport->getGap().startAdvertising(advParams);
+ return gap().startAdvertising();
}
inline ble_error_t
BLE::stopAdvertising(void)
{
- return transport->getGap().stopAdvertising();
+ return gap().stopAdvertising();
}
inline ble_error_t
BLE::setScanParams(uint16_t interval, uint16_t window, uint16_t timeout, bool activeScanning) {
ble_error_t rc;
- if (((rc = scanningParams.setInterval(interval)) == BLE_ERROR_NONE) &&
- ((rc = scanningParams.setWindow(window)) == BLE_ERROR_NONE) &&
- ((rc = scanningParams.setTimeout(timeout)) == BLE_ERROR_NONE)) {
- scanningParams.setActiveScanning(activeScanning);
+ if (((rc = gap().getScanningParams().setInterval(interval)) == BLE_ERROR_NONE) &&
+ ((rc = gap().getScanningParams().setWindow(window)) == BLE_ERROR_NONE) &&
+ ((rc = gap().getScanningParams().setTimeout(timeout)) == BLE_ERROR_NONE)) {
+ gap().getScanningParams().setActiveScanning(activeScanning);
return BLE_ERROR_NONE;
}
@@ -928,38 +902,38 @@
inline ble_error_t
BLE::setScanInterval(uint16_t interval) {
- return scanningParams.setInterval(interval);
+ return gap().getScanningParams().setInterval(interval);
}
inline ble_error_t
BLE::setScanWindow(uint16_t window) {
- return scanningParams.setWindow(window);
+ return gap().getScanningParams().setWindow(window);
}
inline ble_error_t
BLE::setScanTimeout(uint16_t timeout) {
- return scanningParams.setTimeout(timeout);
+ return gap().getScanningParams().setTimeout(timeout);
}
inline void
BLE::setActiveScan(bool activeScanning) {
- return scanningParams.setActiveScanning(activeScanning);
+ return gap().getScanningParams().setActiveScanning(activeScanning);
}
inline ble_error_t
BLE::startScan(void (*callback)(const Gap::AdvertisementCallbackParams_t *params)) {
- return transport->getGap().startScan(scanningParams, callback);
+ return gap().startScan(callback);
}
template<typename T>
inline ble_error_t
BLE::startScan(T *object, void (T::*memberCallback)(const Gap::AdvertisementCallbackParams_t *params)) {
- return transport->getGap().startScan(scanningParams, object, memberCallback);
+ return gap().startScan(scanningParams, object, memberCallback);
}
inline ble_error_t
BLE::stopScan(void) {
- return transport->getGap().stopScan();
+ return gap().stopScan();
}
inline ble_error_t
@@ -967,37 +941,37 @@
Gap::AddressType_t peerAddrType,
const Gap::ConnectionParams_t *connectionParams,
const GapScanningParams *scanParams) {
- return transport->getGap().connect(peerAddr, peerAddrType, connectionParams, scanParams);
+ return gap().connect(peerAddr, peerAddrType, connectionParams, scanParams);
}
inline ble_error_t
BLE::disconnect(Gap::DisconnectionReason_t reason)
{
- return transport->getGap().disconnect(reason);
+ return gap().disconnect(reason);
}
inline void
BLE::onTimeout(Gap::EventCallback_t timeoutCallback)
{
- transport->getGap().setOnTimeout(timeoutCallback);
+ gap().setOnTimeout(timeoutCallback);
}
inline void
BLE::onConnection(Gap::ConnectionEventCallback_t connectionCallback)
{
- transport->getGap().setOnConnection(connectionCallback);
+ gap().setOnConnection(connectionCallback);
}
inline void
BLE::onDisconnection(Gap::DisconnectionEventCallback_t disconnectionCallback)
{
- transport->getGap().setOnDisconnection(disconnectionCallback);
+ gap().setOnDisconnection(disconnectionCallback);
}
template<typename T>
inline void
BLE::addToDisconnectionCallChain(T *tptr, void (T::*mptr)(void)) {
- transport->getGap().addToDisconnectionCallChain(tptr, mptr);
+ gap().addToDisconnectionCallChain(tptr, mptr);
}
inline void
@@ -1051,7 +1025,7 @@
inline void
BLE::onRadioNotification(Gap::RadioNotificationEventCallback_t callback)
{
- transport->getGap().setOnRadioNotification(callback);
+ gap().setOnRadioNotification(callback);
}
inline ble_error_t
@@ -1063,7 +1037,7 @@
inline Gap::GapState_t
BLE::getGapState(void) const
{
- return transport->getGap().getState();
+ return gap().getState();
}
inline ble_error_t
@@ -1106,18 +1080,18 @@
inline ble_error_t
BLE::getPreferredConnectionParams(Gap::ConnectionParams_t *params)
{
- return transport->getGap().getPreferredConnectionParams(params);
+ return gap().getPreferredConnectionParams(params);
}
inline ble_error_t
BLE::setPreferredConnectionParams(const Gap::ConnectionParams_t *params)
{
- return transport->getGap().setPreferredConnectionParams(params);
+ return gap().setPreferredConnectionParams(params);
}
inline ble_error_t
BLE::updateConnectionParams(Gap::Handle_t handle, const Gap::ConnectionParams_t *params) {
- return transport->getGap().updateConnectionParams(handle, params);
+ return gap().updateConnectionParams(handle, params);
}
inline const char *
@@ -1129,37 +1103,37 @@
inline ble_error_t
BLE::setDeviceName(const uint8_t *deviceName)
{
- return transport->getGap().setDeviceName(deviceName);
+ return gap().setDeviceName(deviceName);
}
inline ble_error_t
BLE::getDeviceName(uint8_t *deviceName, unsigned *lengthP)
{
- return transport->getGap().getDeviceName(deviceName, lengthP);
+ return gap().getDeviceName(deviceName, lengthP);
}
inline ble_error_t
BLE::setAppearance(uint16_t appearance)
{
- return transport->getGap().setAppearance(appearance);
+ return gap().setAppearance(appearance);
}
inline ble_error_t
BLE::getAppearance(uint16_t *appearanceP)
{
- return transport->getGap().getAppearance(appearanceP);
+ return gap().getAppearance(appearanceP);
}
inline ble_error_t
BLE::setTxPower(int8_t txPower)
{
- return transport->getGap().setTxPower(txPower);
+ return gap().setTxPower(txPower);
}
inline void
BLE::getPermittedTxPowerValues(const int8_t **valueArrayPP, size_t *countP)
{
- transport->getGap().getPermittedTxPowerValues(valueArrayPP, countP);
+ gap().getPermittedTxPowerValues(valueArrayPP, countP);
}
inline ble_error_t
@@ -1174,43 +1148,43 @@
inline void
BLE::onSecuritySetupInitiated(Gap::SecuritySetupInitiatedCallback_t callback)
{
- transport->getGap().setOnSecuritySetupInitiated(callback);
+ gap().setOnSecuritySetupInitiated(callback);
}
inline void
BLE::onSecuritySetupCompleted(Gap::SecuritySetupCompletedCallback_t callback)
{
- transport->getGap().setOnSecuritySetupCompleted(callback);
+ gap().setOnSecuritySetupCompleted(callback);
}
inline void
BLE::onLinkSecured(Gap::LinkSecuredCallback_t callback)
{
- transport->getGap().setOnLinkSecured(callback);
+ gap().setOnLinkSecured(callback);
}
inline void
BLE::onSecurityContextStored(Gap::HandleSpecificEvent_t callback)
{
- transport->getGap().setOnSecurityContextStored(callback);
+ gap().setOnSecurityContextStored(callback);
}
inline void
BLE::onPasskeyDisplay(Gap::PasskeyDisplayCallback_t callback)
{
- return transport->getGap().setOnPasskeyDisplay(callback);
+ return gap().setOnPasskeyDisplay(callback);
}
inline ble_error_t
BLE::getLinkSecurity(Gap::Handle_t connectionHandle, Gap::LinkSecurityStatus_t *securityStatusP)
{
- return transport->getGap().getLinkSecurity(connectionHandle, securityStatusP);
+ return gap().getLinkSecurity(connectionHandle, securityStatusP);
}
inline ble_error_t
BLE::purgeAllBondingState(void)
{
- return transport->getGap().purgeAllBondingState();
+ return gap().purgeAllBondingState();
}
inline ble_error_t
--- a/public/Gap.h Fri Jun 19 15:53:02 2015 +0100
+++ b/public/Gap.h Fri Jun 19 15:53:02 2015 +0100
@@ -17,6 +17,9 @@
#ifndef __GAP_H__
#define __GAP_H__
+#include "GapAdvertisingData.h"
+#include "GapAdvertisingParams.h"
+#include "GapScanningParams.h"
#include "GapEvents.h"
#include "CallChain.h"
#include "FunctionPointerWithContext.h"
@@ -199,10 +202,8 @@
public:
/* These functions must be defined in the sub-class */
- virtual ble_error_t setAddress(AddressType_t type, const Address_t address) = 0;
+ virtual ble_error_t setAddress(AddressType_t type, const Address_t address) = 0;
virtual ble_error_t getAddress(AddressType_t *typeP, Address_t address) = 0;
- 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 stopScan() = 0;
virtual uint16_t getMinAdvertisingInterval(void) const = 0;
@@ -228,7 +229,25 @@
virtual ble_error_t setTxPower(int8_t txPower) = 0;
virtual void getPermittedTxPowerValues(const int8_t **, size_t *) = 0;
- ble_error_t startScan(const GapScanningParams &scanningParams, void (*callback)(const AdvertisementCallbackParams_t *params)) {
+ ble_error_t startAdvertising(void) {
+ return startAdvertising(advParams);
+ }
+
+ ble_error_t setAdvertisingData(void) {
+ if (needToSetAdvPayload) {
+ needToSetAdvPayload = false;
+ return setAdvertisingData(advPayload, scanResponse);
+ }
+
+ return BLE_ERROR_NONE;
+ }
+
+private:
+ virtual ble_error_t setAdvertisingData(const GapAdvertisingData &, const GapAdvertisingData &) = 0;
+ virtual ble_error_t startAdvertising(const GapAdvertisingParams &) = 0;
+
+public:
+ ble_error_t startScan(void (*callback)(const AdvertisementCallbackParams_t *params)) {
ble_error_t err = BLE_ERROR_NONE;
if (callback) {
if ((err = startRadioScan(scanningParams)) == BLE_ERROR_NONE) {
@@ -240,7 +259,7 @@
}
template<typename T>
- ble_error_t startScan(const GapScanningParams &scanningParams, T *object, void (T::*callbackMember)(const AdvertisementCallbackParams_t *params)) {
+ ble_error_t startScan(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) {
@@ -315,6 +334,39 @@
template<typename T>
void addToDisconnectionCallChain(T *tptr, void (T::*mptr)(void)) {disconnectionCallChain.add(tptr, mptr);}
+ GapAdvertisingParams &getAdvParams(void) {
+ return advParams;
+ }
+ const GapAdvertisingParams &getAdvParams(void) const {
+ return advParams;
+ }
+ void setAdvParams(const GapAdvertisingParams &newParams) {
+ advParams = newParams;
+ }
+
+ GapAdvertisingData &getAdvPayload(void) {
+ needToSetAdvPayload = true;
+ return advPayload;
+ }
+ const GapAdvertisingData &getAdvPayload(void) const {
+ return advPayload;
+ }
+
+ GapAdvertisingData &getScanResponse(void) {
+ needToSetAdvPayload = true;
+ return scanResponse;
+ }
+ const GapAdvertisingData &getScanResponse(void) const {
+ return scanResponse;
+ }
+
+ GapScanningParams &getScanningParams(void) {
+ return scanningParams;
+ }
+ const GapScanningParams &getScanningParams(void) const {
+ return scanningParams;
+ }
+
public:
GapState_t getState(void) const {
return state;
@@ -322,6 +374,11 @@
protected:
Gap() :
+ advParams(),
+ advPayload(),
+ needToSetAdvPayload(true),
+ scanningParams(),
+ scanResponse(),
state(),
onTimeout(NULL),
onConnection(NULL),
@@ -334,7 +391,8 @@
onPasskeyDisplay(),
onAdvertisementReport(),
disconnectionCallChain() {
- /* empty */
+ advPayload.clear();
+ scanResponse.clear();
}
public:
@@ -420,6 +478,16 @@
}
protected:
+ GapAdvertisingParams advParams;
+ GapAdvertisingData advPayload;
+ /* Accumulation of AD structures in the advertisement payload should
+ * eventually result in a call to the target's setAdvertisingData() before
+ * the server begins advertising. This flag marks the status of the pending update.*/
+ bool needToSetAdvPayload;
+
+ GapScanningParams scanningParams;
+ GapAdvertisingData scanResponse;
+
GapState_t state;
protected:
--- a/public/GapAdvertisingData.h Fri Jun 19 15:53:02 2015 +0100 +++ b/public/GapAdvertisingData.h Fri Jun 19 15:53:02 2015 +0100 @@ -17,6 +17,7 @@ #ifndef __GAP_ADVERTISING_DATA_H__ #define __GAP_ADVERTISING_DATA_H__ +#include <stdint.h> #include <string.h> #include "blecommon.h"
--- a/public/GapScanningParams.h Fri Jun 19 15:53:02 2015 +0100
+++ b/public/GapScanningParams.h Fri Jun 19 15:53:02 2015 +0100
@@ -17,8 +17,6 @@
#ifndef __GAP_SCANNING_PARAMS_H__
#define __GAP_SCANNING_PARAMS_H__
-#include "Gap.h"
-
class GapScanningParams {
public:
static const unsigned SCAN_INTERVAL_MIN = 0x0004; /**< Minimum Scan interval in 625 us units, i.e. 2.5 ms. */
@@ -29,56 +27,18 @@
static const unsigned SCAN_TIMEOUT_MAX = 0xFFFF; /**< Maximum Scan timeout in seconds. */
public:
- GapScanningParams(uint16_t interval = SCAN_INTERVAL_MAX,
- uint16_t window = SCAN_WINDOW_MAX,
- uint16_t timeout = 0,
- bool activeScanning = false) : _interval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(interval)),
- _window(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(window)),
- _timeout(timeout),
- _activeScanning(activeScanning) {
- /* stay within limits */
- if (_interval < SCAN_INTERVAL_MIN) {
- _interval = SCAN_INTERVAL_MIN;
- }
- if (_interval > SCAN_INTERVAL_MAX) {
- _interval = SCAN_INTERVAL_MAX;
- }
- if (_window < SCAN_WINDOW_MIN) {
- _window = SCAN_WINDOW_MIN;
- }
- if (_window > SCAN_WINDOW_MAX) {
- _window = SCAN_WINDOW_MAX;
- }
- }
+ GapScanningParams(uint16_t interval = SCAN_INTERVAL_MAX,
+ uint16_t window = SCAN_WINDOW_MAX,
+ uint16_t timeout = 0,
+ bool activeScanning = false);
- ble_error_t setInterval(uint16_t newIntervalInMS) {
- uint16_t newInterval = Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(newIntervalInMS);
- if ((newInterval >= SCAN_INTERVAL_MIN) && (newInterval < SCAN_INTERVAL_MAX)) {
- _interval = newInterval;
- return BLE_ERROR_NONE;
- }
+ ble_error_t setInterval(uint16_t newIntervalInMS);
- return BLE_ERROR_PARAM_OUT_OF_RANGE;
- }
+ ble_error_t setWindow(uint16_t newWindowInMS);
- ble_error_t setWindow(uint16_t newWindowInMS) {
- uint16_t newWindow = Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(newWindowInMS);
- if ((newWindow >= SCAN_WINDOW_MIN) && (newWindow < SCAN_WINDOW_MAX)) {
- _window = newWindow;
- return BLE_ERROR_NONE;
- }
+ ble_error_t setTimeout(uint16_t newTimeout);
- return BLE_ERROR_PARAM_OUT_OF_RANGE;
- }
-
- ble_error_t setTimeout(uint16_t newTimeout) {
- _timeout = newTimeout;
- return BLE_ERROR_NONE;
- }
-
- void setActiveScanning(bool activeScanning) {
- _activeScanning = activeScanning;
- }
+ void setActiveScanning(bool activeScanning);
public:
/* @Note: The following return durations in units of 0.625 ms */
