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/Gap.h
- Revision:
- 531:bdcd44b03974
- Parent:
- 527:493185cebc03
- Child:
- 532:a709cfc1500d
--- a/public/Gap.h Fri Jun 19 15:52:07 2015 +0100
+++ b/public/Gap.h Fri Jun 19 15:52:07 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:
