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
Diff: public/BLE.h
- Revision:
- 531:bdcd44b03974
- Parent:
- 530:00800f9ffbfb
- Child:
- 533:c2aafeedaf8c
--- a/public/BLE.h Fri Jun 19 15:52:07 2015 +0100 +++ b/public/BLE.h Fri Jun 19 15:52:07 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