From df95a1f8bdd1b05f0c43de20a5ab1cbd80b5f745 Mon Sep 17 00:00:00 2001 From: Vincent Coubard Date: Fri, 7 Dec 2018 00:03:50 +0000 Subject: [PATCH] BLE: Allow null value for periodic interval in advertising report event. --- features/FEATURE_BLE/ble/gap/Events.h | 11 ++++++++--- features/FEATURE_BLE/source/generic/GenericGap.cpp | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/features/FEATURE_BLE/ble/gap/Events.h b/features/FEATURE_BLE/ble/gap/Events.h index 38c910a34c..fede40e2f4 100644 --- a/features/FEATURE_BLE/ble/gap/Events.h +++ b/features/FEATURE_BLE/ble/gap/Events.h @@ -63,7 +63,7 @@ struct AdvertisingReportEvent { advertising_sid_t SID, advertising_power_t txPower, rssi_t rssi, - periodic_interval_t periodicInterval, + uint16_t periodicInterval, const peer_address_type_t &directAddressType, const address_t &directAddress, const mbed::Span &advertisingData @@ -133,10 +133,15 @@ struct AdvertisingReportEvent { return rssi; } + /** Indicate if periodic interval is valid */ + bool isPeriodicIntervalPresent() const { + return periodicInterval != 0; + } + /** Get interval. */ periodic_interval_t getPeriodicInterval() const { - return periodicInterval; + return periodic_interval_t(periodicInterval); } /** Get target address type in directed advertising. */ @@ -166,7 +171,7 @@ private: advertising_sid_t SID; advertising_power_t txPower; rssi_t rssi; - periodic_interval_t periodicInterval; + uint16_t periodicInterval; peer_address_type_t directAddressType; const address_t &directAddress; mbed::Span advertisingData; diff --git a/features/FEATURE_BLE/source/generic/GenericGap.cpp b/features/FEATURE_BLE/source/generic/GenericGap.cpp index d4088428ce..b66388c27a 100644 --- a/features/FEATURE_BLE/source/generic/GenericGap.cpp +++ b/features/FEATURE_BLE/source/generic/GenericGap.cpp @@ -1589,7 +1589,7 @@ void GenericGap::on_advertising_report(const pal::GapAdvertisingReportEvent &e) /* SID - NO ADI FIELD IN THE PDU */ 0xFF, /* tx power information not available */ 127, advertising.rssi, - /* NO PERIODIC ADVERTISING */ periodic_interval_t(0), + /* NO PERIODIC ADVERTISING */ 0, peer_address_type_t::ANONYMOUS, ble::address_t (), mbed::Span(advertising.data.data(), advertising.data.size()) @@ -2642,7 +2642,7 @@ void GenericGap::on_extended_advertising_report( advertising_sid, tx_power, rssi, - periodic_interval_t(periodic_advertising_interval), + periodic_advertising_interval, (PeerAddressType_t::type) direct_address_type.value(), (BLEProtocol::AddressBytes_t &) direct_address, mbed::make_Span(data, data_length)