From f35ebcc9005b70516d08d1b29b9c238dc7597e63 Mon Sep 17 00:00:00 2001 From: paul-szczepanek-arm <33840200+paul-szczepanek-arm@users.noreply.github.com> Date: Wed, 7 Nov 2018 11:12:47 +0000 Subject: [PATCH] simplify params to avoid holding state --- features/FEATURE_BLE/ble/Gap.h | 28 +++--- .../FEATURE_BLE/ble/GapAdvertisingParams.h | 90 +++++++++++-------- 2 files changed, 71 insertions(+), 47 deletions(-) diff --git a/features/FEATURE_BLE/ble/Gap.h b/features/FEATURE_BLE/ble/Gap.h index c8ed0e7075..d706d52bdd 100644 --- a/features/FEATURE_BLE/ble/Gap.h +++ b/features/FEATURE_BLE/ble/Gap.h @@ -1145,57 +1145,63 @@ public: /* advertising */ - uint8_t getMaxAdvertisingSetNumber() { + virtual uint8_t getMaxAdvertisingSetNumber() { /* Requesting action from porter(s): override this API if this capability is supported. */ return 1; } - uint8_t getMaxAdvertisingDataLength() { + virtual uint8_t getMaxAdvertisingDataLength() { /* Requesting action from porter(s): override this API if this capability is supported. */ return 0x1F; } - ble_error_t createAdvertisingSet(AdvHandle_t* handle) { + virtual ble_error_t createAdvertisingSet(AdvHandle_t* handle) { (void) handle; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - ble_error_t destroyAdvertisingSet(AdvHandle_t handle) { + virtual ble_error_t destroyAdvertisingSet(AdvHandle_t handle) { (void) handle; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - ble_error_t setAdvertisingParams(AdvHandle_t handle, const GapAdvertisingParams* params) { + virtual ble_error_t setAdvertisingParams(AdvHandle_t handle, const GapAdvertisingParams* params) { (void) handle; (void) params; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - ble_error_t setAdvertisingParams(AdvHandle_t handle, const GapExtendedAdvertisingParams* params) { + virtual ble_error_t setAdvertisingParams(AdvHandle_t handle, const GapExtendedAdvertisingParams* params) { (void) handle; (void) params; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - ble_error_t setAdvertisingPayload(AdvHandle_t handle, const GapAdvertisingData* payload) { + virtual ble_error_t setAdvertisingPayload(AdvHandle_t handle, const GapAdvertisingData* payload) { (void) handle; (void) payload; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - ble_error_t setAdvertisingScanResponse(AdvHandle_t handle, const GapAdvertisingData* response) { + virtual ble_error_t setAdvertisingScanResponse(AdvHandle_t handle, const GapAdvertisingData* response) { (void) handle; (void) response; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - ble_error_t startAdvertising(AdvHandle_t handle) { + virtual ble_error_t startAdvertising( + AdvHandle_t handle, + uint8_t maxEvents = 0, + uint32_t maxDuration = 0 + ) { + (void) maxEvents; + (void) maxDuration; /* deprecation compatibility */ if (handle != LEGACY_ADVERTISING_HANDLE) { return BLE_ERROR_NOT_IMPLEMENTED; @@ -1211,13 +1217,13 @@ public: return status; } - ble_error_t stopAdvertising(AdvHandle_t handle) { + virtual ble_error_t stopAdvertising(AdvHandle_t handle) { (void) handle; /* Requesting action from porter(s): override this API if this capability is supported. */ return BLE_ERROR_NOT_IMPLEMENTED; } - bool isAdvertisingActive(AdvHandle_t handle) const { + virtual bool isAdvertisingActive(AdvHandle_t handle) const { if (handle != LEGACY_ADVERTISING_HANDLE) { return false; } diff --git a/features/FEATURE_BLE/ble/GapAdvertisingParams.h b/features/FEATURE_BLE/ble/GapAdvertisingParams.h index 16f9970b56..bfc1eaf147 100644 --- a/features/FEATURE_BLE/ble/GapAdvertisingParams.h +++ b/features/FEATURE_BLE/ble/GapAdvertisingParams.h @@ -257,29 +257,47 @@ private: uint16_t _timeout; }; -class GapExtendedAdvertisingParams : public GapAdvertisingParams { - GapExtendedAdvertisingParams() - : GapAdvertisingParams(), - _minInterval(0), - _maxInterval(0), - _maxDuration(0), - _peerAddressType(), - _ownAddressType(), - _policy(ble::ADV_POLICY_IGNORE_WHITELIST), - _primaryPhy(ble::phy_t::LE_1M), - _secondaryPhy(ble::phy_t::LE_1M), - _peerAddress(), - _maxEvents(0), - _txPower(0), - _eventNumber(0), - _channel37(1), - _channel38(1), - _channel39(1), - _anonymous(0), - _notifyOnScan(1) { +class GapExtendedAdvertisingParams { + GapExtendedAdvertisingParams() : + _advType(ble::EXT_ADV_CONNECTABLE_UNDIRECTED), + _minInterval(0), + _maxInterval(0), + _maxDuration(0), + _peerAddressType(), + _ownAddressType(), + _policy(ble::ADV_POLICY_IGNORE_WHITELIST), + _primaryPhy(ble::phy_t::LE_1M), + _secondaryPhy(ble::phy_t::LE_1M), + _peerAddress(), + _maxEvents(0), + _txPower(0), + _eventNumber(0), + _channel37(1), + _channel38(1), + _channel39(1), + _anonymous(0), + _notifyOnScan(1) { } + /** + * Update the advertising type. + * + * @param[in] newAdvType The new advertising type. + */ + void setAdvertisingType(ble::advertising_type_t newAdvType) { + _advType = newAdvType; + } + + /** + * Return advertising type. + * + * @return Advertising type. + */ + ble::advertising_type_t setAdvertisingType() { + return _advType; + } + bool getAnonymousAdvertising() { return _anonymous; } @@ -420,34 +438,34 @@ class GapExtendedAdvertisingParams : public GapAdvertisingParams { _notifyOnScan = enable; } - ble_error_t getDuration( - uint32_t *maxDuration /* ms */, - uint8_t *maxEvents - ) { - if (!maxDuration || !maxEvents) { - return BLE_ERROR_INVALID_PARAM; - } - return BLE_ERROR_NONE; + /**/ + + uint32_t getMinPrimaryAdvertisingInterval() const { + return _minInterval; } - void setDuration( - uint32_t maxDuration /* ms */, - uint8_t maxEvents = 0 - ) { - _maxDuration = maxDuration; - _maxEvents = maxEvents; + uint32_t getMinPrimaryAdvertisingInterval() const { + return _maxInterval; } + + BLEProtocol::AddressBytes_t* getPeerAddress() { + return _peerAddress; + }; + + ble::peer_address_type_t getPeerAddressType() { + return _peerAddressType; + }; + private: + ble::advertising_type_t _advType; uint32_t _minInterval; uint32_t _maxInterval; - uint32_t _maxDuration; ble::peer_address_type_t _peerAddressType; BLEProtocol::AddressType_t _ownAddressType; ble::advertising_policy_mode_t _policy; ble::phy_t _primaryPhy; ble::phy_t _secondaryPhy; BLEProtocol::AddressBytes_t _peerAddress; - uint8_t _maxEvents; uint8_t _txPower; uint8_t _eventNumber; uint8_t _channel37:1;