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
