ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
gap.hpp
Go to the documentation of this file.
1
5#ifndef ELEC_C7222_BLE_GAP_H_
6#define ELEC_C7222_BLE_GAP_H_
7
8#include <cassert>
9#include <cstddef>
10#include <cstdint>
11#include <iosfwd>
12#include <list>
13#include <map>
14#include <vector>
15
17#include "ble_address.hpp"
18#include "ble_error.hpp"
19#include "non_copyable.hpp"
20
21namespace c7222 {
22
23using ConnectionHandle = uint16_t;
24
211 public:
351 enum class AdvertisingEventType : uint16_t {
355 kConnectable = 0x0001,
359 kScannable = 0x0002,
363 kDirected = 0x0004,
367 kHighDutyCycle = 0x0008,
371 kLegacy = 0x0010,
375 kAnonymous = 0x0020,
379 kIncludeTxPower = 0x0040
380 };
381
385 enum class Phy : uint8_t {
389 kNone = 0x00,
393 kLe1M = 0x01,
397 kLe2M = 0x02,
401 kLeCoded = 0x03
402 };
403
407 enum class AdvertisingType : uint8_t {
411 kAdvInd = 0x00,
415 kAdvDirectInd = 0x01,
419 kAdvScanInd = 0x02,
423 kAdvNonConnInd = 0x03
424 };
425
429 enum class DirectAddressType : uint8_t {
433 kPublic = 0x00,
437 kRandom = 0x01
438 };
439
443 enum class AdvertisingChannelMap : uint8_t {
447 kChannel37 = 0x01,
451 kChannel38 = 0x02,
455 kChannel39 = 0x04,
459 kAll = 0x07
460 };
461
465 enum class AdvertisingFilterPolicy : uint8_t {
469 kScanAnyConnectAny = 0x00,
482 };
483
496 int8_t rssi;
500 const uint8_t* data;
504 uint8_t data_length;
505 friend std::ostream& operator<<(std::ostream& os, const AdvertisingReport& ar);
506 };
507
555
572 uint16_t clock_offset;
580 int8_t rssi;
608 const uint8_t* name;
612 uint8_t name_len;
613
614 friend std::ostream& operator<<(std::ostream& os, const InquiryResult& ir);
615 };
616
633 virtual void OnScanRequestReceived(uint8_t advertising_handle,
634 const BleAddress& scanner_address) const {}
635
643 virtual void OnAdvertisingStart(uint8_t status) const {}
644
658 virtual void OnAdvertisingEnd(uint8_t status, ConnectionHandle connection_handle) const {}
659
667 virtual void OnAdvertisingReport(const AdvertisingReport& report) const {}
668
676 virtual void OnExtendedAdvertisingReport(const ExtendedAdvertisingReport& report) const {}
677
685 virtual void OnScanTimeout(uint8_t status) const {}
686
696 virtual void OnPeriodicAdvertisingSyncEstablished(uint8_t status,
697 ConnectionHandle sync_handle) const {}
698
712 int8_t tx_power,
713 int8_t rssi,
714 uint8_t data_status,
715 const uint8_t* data,
716 uint8_t data_length) const {}
717
725 virtual void OnPeriodicAdvertisingSyncLoss(ConnectionHandle sync_handle) const {}
726
741 virtual void OnConnectionComplete(uint8_t status,
742 ConnectionHandle con_handle,
743 const BleAddress& address,
744 uint16_t conn_interval,
745 uint16_t conn_latency,
746 uint16_t supervision_timeout) const {}
747
762 uint16_t min_interval,
763 uint16_t max_interval,
764 uint16_t latency,
765 uint16_t supervision_timeout) const {}
766
778 virtual void OnConnectionParametersUpdateComplete(uint8_t status,
779 ConnectionHandle con_handle,
780 uint16_t conn_interval,
781 uint16_t conn_latency,
782 uint16_t supervision_timeout) const {}
783
793 virtual void OnDisconnectionComplete(uint8_t status,
794 ConnectionHandle con_handle,
795 uint8_t reason) const {}
796
807 virtual void
808 OnReadPhy(uint8_t status, ConnectionHandle con_handle, Phy tx_phy, Phy rx_phy) const {}
809
820 virtual void OnPhyUpdateComplete(uint8_t status,
821 ConnectionHandle con_handle,
822 Phy tx_phy,
823 Phy rx_phy) const {}
824
834 virtual void OnDataLengthChange(ConnectionHandle con_handle,
835 uint16_t tx_size,
836 uint16_t rx_size) const {}
837
843 virtual void OnPrivacyEnabled() const {}
844
853 virtual void OnSecurityLevel(ConnectionHandle con_handle, uint8_t security_level) const {}
854
863 virtual void OnDedicatedBondingCompleted(uint8_t status, const BleAddress& address) const {}
864
872 virtual void OnInquiryResult(const InquiryResult& result) const {}
873
881 virtual void OnInquiryComplete(uint8_t status) const {}
882
891 virtual void OnRssiMeasurement(ConnectionHandle con_handle, int8_t rssi) const {}
892
904 virtual void OnLocalOobData(bool oob_data_present,
905 const uint8_t* c_192,
906 const uint8_t* r_192,
907 const uint8_t* c_256,
908 const uint8_t* r_256) const {}
909
920 virtual void OnPairingStarted(ConnectionHandle con_handle,
921 const BleAddress& address,
922 bool ssp,
923 bool initiator) const {}
924
934 virtual void OnPairingComplete(ConnectionHandle con_handle,
935 const BleAddress& address,
936 uint8_t status) const {}
937
938 protected:
943 ~EventHandler() = default;
944 };
945
1001
1022
1027 uint16_t interval;
1031 uint16_t latency;
1036 };
1037
1041 void SetRandomAddress(const BleAddress& address);
1042
1047
1054 void SetAdvertisingData(const uint8_t* data, size_t size);
1055
1061 void SetAdvertisingData(const std::vector<uint8_t>& data) {
1062 SetAdvertisingData(data.data(), data.size());
1063 }
1064
1072
1079 bool ok = advertisement_data_builder_.Build();
1080 assert(ok && "AdvertisementDataBuilder contains invalid data or is empty");
1081 SetAdvertisingData(advertisement_data_builder_.data());
1082 }
1083
1087 void SetScanResponseData(uint8_t length, const uint8_t* data);
1088
1092 void EnableAdvertising(bool enabled);
1093
1099
1104 const PreferredConnectionParameters& params);
1105
1110 const PreferredConnectionParameters& params);
1111
1116
1121
1126
1132 void AddEventHandler(const EventHandler& handler);
1146 bool RemoveEventHandler(const EventHandler& handler);
1147
1154
1158 std::list<const EventHandler*> GetEventHandlers() const {
1159 return event_handlers_;
1160 }
1161
1170
1175 return advertisement_enabled_;
1176 }
1177
1185 bool IsAdvertising() const {
1186 return advertising_;
1187 }
1188
1193 return advertising_params_set_;
1194 }
1195
1199 bool IsConnected() const {
1200 return connected_;
1201 }
1202
1209 bool GetRandomAddress(BleAddress& address) const;
1210
1214 bool IsRandomAddressSet() const {
1215 return random_address_set_;
1216 }
1217
1225
1231 const std::vector<uint8_t>& GetAdvertisingData() const {
1232 return advertisement_data_builder_.data();
1233 }
1234
1242 return advertisement_data_builder_;
1243 }
1244
1249 return advertisement_data_builder_;
1250 }
1251
1256 return advertising_data_set_;
1257 }
1258
1264 const std::vector<uint8_t>& scan_response_data() const {
1265 return scan_response_data_;
1266 }
1267
1272 return scan_response_data_set_;
1273 }
1274
1280 const std::map<ConnectionHandle, ConnectionParameters>& GetConnectionParameters() const {
1281 return connection_parameters_;
1282 }
1283
1287 static Gap* GetInstance();
1288
1297 virtual BleError DispatchBleHciPacket(uint8_t packet_type,
1298 const uint8_t* packet_data,
1299 uint16_t packet_data_size);
1300
1301 protected:
1311 const uint8_t* event_data,
1312 uint16_t event_data_size);
1313
1314 private:
1315 Gap() = default;
1316 Gap(const Gap&) = delete;
1317 Gap& operator=(const Gap&) = delete;
1318
1319 ~Gap() = default;
1320
1326 static Gap* instance_;
1327
1331 bool advertisement_enabled_ = false;
1332
1336 bool advertising_ = false;
1340 bool advertising_params_set_ = false;
1341
1345 AdvertisementDataBuilder advertisement_data_builder_{};
1349 bool connected_ = false;
1350
1354 BleAddress random_address_{};
1358 bool random_address_set_ = false;
1359
1363 AdvertisementParameters advertising_params_{};
1367 bool advertising_data_set_ = false;
1368
1372 std::vector<uint8_t> scan_response_data_{};
1376 bool scan_response_data_set_ = false;
1377
1381 std::map<ConnectionHandle, ConnectionParameters> connection_parameters_;
1385 std::list<const EventHandler*> event_handlers_;
1386};
1387
1388} // namespace c7222
1389
1390std::ostream& operator<<(std::ostream& os, c7222::Gap::AdvertisingEventType type);
1391std::ostream& operator<<(std::ostream& os, c7222::Gap::Phy phy);
1392std::ostream& operator<<(std::ostream& os, c7222::Gap::AdvertisingType type);
1393std::ostream& operator<<(std::ostream& os, c7222::Gap::DirectAddressType type);
1394std::ostream& operator<<(std::ostream& os, c7222::Gap::AdvertisingChannelMap map);
1395std::ostream& operator<<(std::ostream& os, c7222::Gap::AdvertisingFilterPolicy policy);
1396
1399 return static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs);
1400}
1401constexpr uint8_t operator|(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs) {
1402 uint8_t ret = lhs | static_cast<uint8_t>(rhs);
1403 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1404 return ret;
1405}
1406constexpr uint8_t operator|=(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs) {
1407 uint8_t ret = lhs | static_cast<uint8_t>(rhs);
1408 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1409 return ret;
1410}
1411constexpr uint8_t operator|(c7222::Gap::AdvertisingChannelMap lhs, uint8_t rhs) {
1412 uint8_t ret = static_cast<uint8_t>(lhs) | rhs;
1413 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1414 return ret;
1415}
1416
1419 return static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs);
1420}
1421
1422constexpr uint8_t operator&(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs) {
1423 uint8_t ret = lhs & static_cast<uint8_t>(rhs);
1424 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1425 return ret;
1426}
1427
1428constexpr uint8_t operator&=(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs) {
1429 uint8_t ret = lhs & static_cast<uint8_t>(rhs);
1430 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1431 return ret;
1432}
1433
1434constexpr uint8_t operator&(c7222::Gap::AdvertisingChannelMap lhs, uint8_t rhs) {
1435 uint8_t ret = static_cast<uint8_t>(lhs) & rhs;
1436 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1437 return ret;
1438}
1439
1440constexpr uint8_t operator^(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs) {
1441 uint8_t ret = lhs ^ static_cast<uint8_t>(rhs);
1442 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1443 return ret;
1444}
1445constexpr uint8_t operator^=(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs) {
1446 uint8_t ret = lhs ^ static_cast<uint8_t>(rhs);
1447 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1448 return ret;
1449}
1450constexpr uint8_t operator^(c7222::Gap::AdvertisingChannelMap lhs, uint8_t rhs) {
1451 uint8_t ret = static_cast<uint8_t>(lhs) & rhs;
1452 assert(ret <= static_cast<uint8_t>(c7222::Gap::AdvertisingChannelMap::kAll));
1453 return ret;
1454}
1455
1456#endif // ELEC_C7222_BLE_GAP_H_
BLE GAP advertisement data builder.
BLE address wrapper.
BLE error codes.
Builder for assembling a complete advertising payload.
Definition advertisement_data.hpp:304
bool Build()
Build the raw payload from stored AD structures.
const std::vector< uint8_t > & data() const
Return the raw advertising payload bytes.
BLE address container with an associated address type.
Definition ble_address.hpp:43
Manages Generic Access Profile (GAP) functionality for BLE.
Definition gap.hpp:210
DirectAddressType
Direct address type for directed advertising.
Definition gap.hpp:429
bool IsScanResponseDataSet() const
Check if scan response data has been set.
Definition gap.hpp:1271
AdvertisingFilterPolicy
Advertising filter policy.
Definition gap.hpp:465
void SetScanResponseData(uint8_t length, const uint8_t *data)
Set scan response data payload (ADV_SCAN_IND).
BleError Disconnect(ConnectionHandle con_handle)
Disconnect a connection by handle.
bool IsConnected() const
Check if a connection is active.
Definition gap.hpp:1199
void StartAdvertising()
Convenience helpers for starting/stopping advertising.
virtual BleError DispatchBleHciPacket(uint8_t packet_type, const uint8_t *packet_data, uint16_t packet_data_size)
Dispatch a raw HCI packet into the GAP event pipeline.
bool IsAdvertising() const
Check if advertising is currently running on the controller.
Definition gap.hpp:1185
BleError UpdateConnectionParameters(ConnectionHandle con_handle, const PreferredConnectionParameters &params)
Update connection parameters (central role).
bool GetConnectionParameters(ConnectionHandle con_handle, ConnectionParameters &out) const
Get cached connection parameters for a handle.
void SetAdvertisingData(const AdvertisementDataBuilder &data_builder)
Set legacy advertising data payload from an AdvertisementDataBuilder.
void ClearEventHandlers()
Clear all registered event handlers.
BleError ReadRssi(ConnectionHandle con_handle)
Read the RSSI for a connection.
bool IsAdvertisingDataSet() const
Check if advertising data has been set.
Definition gap.hpp:1255
void SetAdvertisingData()
Set legacy advertising data payload from the internal builder.
Definition gap.hpp:1078
bool GetRandomAddress(BleAddress &address) const
Get the random address if set.
void EnableAdvertising(bool enabled)
Enable or disable advertising.
std::list< const EventHandler * > GetEventHandlers() const
Get the list of registered event handlers.
Definition gap.hpp:1158
void SetRandomAddress(const BleAddress &address)
Set a fixed random address for advertising.
bool IsAdvertisingParametersSet() const
Check if advertising parameters have been set.
Definition gap.hpp:1192
AdvertisingChannelMap
Advertising channel map bitfield.
Definition gap.hpp:443
AdvertisingType
Legacy advertising types for LE advertising parameters.
Definition gap.hpp:407
AdvertisementDataBuilder & GetAdvertisementDataBuilder()
Access the internal advertisement data builder.
Definition gap.hpp:1241
bool GetAdvertisingParameters(AdvertisementParameters &params) const
Get the current advertising parameters.
void SetLocalAddress(BleAddress &address)
Read the local device address.
const std::vector< uint8_t > & GetAdvertisingData() const
Get the advertising data payload.
Definition gap.hpp:1231
const std::map< ConnectionHandle, ConnectionParameters > & GetConnectionParameters() const
Access the cached connection parameter map.
Definition gap.hpp:1280
void SetAdvertisingParameters(const AdvertisementParameters &params)
Configure legacy advertising parameters.
AdvertisingEventType
Extended advertising event properties (bitfield).
Definition gap.hpp:351
void SetAdvertisingData(const std::vector< uint8_t > &data)
Set legacy advertising data payload from a vector.
Definition gap.hpp:1061
void StopAdvertising()
static Gap * GetInstance()
Get the singleton instance.
virtual BleError DispatchEvent(EventId event_id, const uint8_t *event_data, uint16_t event_data_size)
Dispatch a mapped GAP event to registered handlers.
bool IsAdvertisingEnabled() const
Check if advertising is currently enabled.
Definition gap.hpp:1174
Phy
LE PHY values reported in extended advertising reports.
Definition gap.hpp:385
const AdvertisementDataBuilder & GetAdvertisementDataBuilder() const
Access the internal advertisement data builder (const).
Definition gap.hpp:1248
bool IsRandomAddressSet() const
Check if a random address has been set.
Definition gap.hpp:1214
const std::vector< uint8_t > & scan_response_data() const
Get the scan response data payload.
Definition gap.hpp:1264
void SetAdvertisingData(const uint8_t *data, size_t size)
Set legacy advertising data payload.
EventId
Event IDs used by Gap::EventHandler.
Definition gap.hpp:215
@ kLePeriodicAdvertisingSyncEstablished
@ kL2capConnectionParameterUpdateRequest
void AddEventHandler(const EventHandler &handler)
Register an event handler.
BleError RequestConnectionParameterUpdate(ConnectionHandle con_handle, const PreferredConnectionParameters &params)
Request a connection parameter update (peripheral role).
bool RemoveEventHandler(const EventHandler &handler)
Unregister an event handler.
Disable both copy and move operations.
Definition non_copyable.hpp:75
constexpr uint8_t operator&=(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs)
Definition gap.hpp:1428
constexpr uint8_t operator^(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs)
Definition gap.hpp:1440
constexpr uint8_t operator&(c7222::Gap::AdvertisingChannelMap lhs, c7222::Gap::AdvertisingChannelMap rhs)
Definition gap.hpp:1417
constexpr uint8_t operator|=(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs)
Definition gap.hpp:1406
std::ostream & operator<<(std::ostream &os, c7222::Gap::AdvertisingEventType type)
constexpr uint8_t operator|(c7222::Gap::AdvertisingChannelMap lhs, c7222::Gap::AdvertisingChannelMap rhs)
Definition gap.hpp:1397
constexpr uint8_t operator^=(uint8_t lhs, c7222::Gap::AdvertisingChannelMap rhs)
Definition gap.hpp:1445
C7222 course abstractions namespace.
Definition ble.hpp:20
uint16_t ConnectionHandle
Definition gap.hpp:23
BleError
BLE error codes used across HCI/L2CAP/ATT/GATT and BTstack helpers.
Definition ble_error.hpp:19
Base classes to control copy/move semantics.
AdvertisementParameters()
Construct typical connectable undirected advertising parameters.
Definition gap.hpp:992
BleAddress direct_address
Direct target address for directed advertising.
Definition gap.hpp:965
DirectAddressType direct_address_type
Direct address type used for directed advertising.
Definition gap.hpp:958
uint8_t channel_map
Advertising channel map bitfield.
Definition gap.hpp:979
uint16_t min_interval
Minimum advertising interval (unit: 0.625 ms).
Definition gap.hpp:969
AdvertisingType advertising_type
Legacy advertising type (ADV_IND, ADV_SCAN_IND, etc.).
Definition gap.hpp:952
AdvertisingFilterPolicy filter_policy
Advertising filter policy.
Definition gap.hpp:985
uint16_t max_interval
Maximum advertising interval (unit: 0.625 ms).
Definition gap.hpp:973
Definition gap.hpp:484
uint8_t data_length
Definition gap.hpp:504
AdvertisingEventType advertising_event_type
Definition gap.hpp:488
BleAddress address
Definition gap.hpp:492
int8_t rssi
Definition gap.hpp:496
friend std::ostream & operator<<(std::ostream &os, const AdvertisingReport &ar)
const uint8_t * data
Definition gap.hpp:500
Definition gap.hpp:1023
uint16_t interval
Current connection interval (unit: 1.25 ms).
Definition gap.hpp:1027
uint16_t latency
Current slave latency (number of connection events to skip).
Definition gap.hpp:1031
uint16_t supervision_timeout
Current supervision timeout (unit: 10 ms).
Definition gap.hpp:1035
Definition gap.hpp:617
virtual void OnUpdateConnectionParametersRequest(ConnectionHandle con_handle, uint16_t min_interval, uint16_t max_interval, uint16_t latency, uint16_t supervision_timeout) const
Definition gap.hpp:761
virtual void OnDedicatedBondingCompleted(uint8_t status, const BleAddress &address) const
Definition gap.hpp:863
virtual void OnReadPhy(uint8_t status, ConnectionHandle con_handle, Phy tx_phy, Phy rx_phy) const
Definition gap.hpp:808
virtual void OnPrivacyEnabled() const
Definition gap.hpp:843
virtual void OnInquiryResult(const InquiryResult &result) const
Definition gap.hpp:872
virtual void OnScanRequestReceived(uint8_t advertising_handle, const BleAddress &scanner_address) const
GAP event callback interface.
Definition gap.hpp:633
virtual void OnConnectionComplete(uint8_t status, ConnectionHandle con_handle, const BleAddress &address, uint16_t conn_interval, uint16_t conn_latency, uint16_t supervision_timeout) const
Definition gap.hpp:741
virtual void OnDisconnectionComplete(uint8_t status, ConnectionHandle con_handle, uint8_t reason) const
Definition gap.hpp:793
virtual void OnInquiryComplete(uint8_t status) const
Definition gap.hpp:881
virtual void OnDataLengthChange(ConnectionHandle con_handle, uint16_t tx_size, uint16_t rx_size) const
Definition gap.hpp:834
virtual void OnRssiMeasurement(ConnectionHandle con_handle, int8_t rssi) const
Definition gap.hpp:891
virtual void OnExtendedAdvertisingReport(const ExtendedAdvertisingReport &report) const
Definition gap.hpp:676
virtual void OnPhyUpdateComplete(uint8_t status, ConnectionHandle con_handle, Phy tx_phy, Phy rx_phy) const
Definition gap.hpp:820
virtual void OnConnectionParametersUpdateComplete(uint8_t status, ConnectionHandle con_handle, uint16_t conn_interval, uint16_t conn_latency, uint16_t supervision_timeout) const
Definition gap.hpp:778
virtual void OnAdvertisingStart(uint8_t status) const
Definition gap.hpp:643
virtual void OnPeriodicAdvertisingSyncEstablished(uint8_t status, ConnectionHandle sync_handle) const
Definition gap.hpp:696
virtual void OnPairingComplete(ConnectionHandle con_handle, const BleAddress &address, uint8_t status) const
Definition gap.hpp:934
virtual void OnAdvertisingEnd(uint8_t status, ConnectionHandle connection_handle) const
Definition gap.hpp:658
virtual void OnScanTimeout(uint8_t status) const
Definition gap.hpp:685
virtual void OnPairingStarted(ConnectionHandle con_handle, const BleAddress &address, bool ssp, bool initiator) const
Definition gap.hpp:920
virtual void OnLocalOobData(bool oob_data_present, const uint8_t *c_192, const uint8_t *r_192, const uint8_t *c_256, const uint8_t *r_256) const
Definition gap.hpp:904
virtual void OnPeriodicAdvertisingSyncLoss(ConnectionHandle sync_handle) const
Definition gap.hpp:725
virtual void OnSecurityLevel(ConnectionHandle con_handle, uint8_t security_level) const
Definition gap.hpp:853
virtual void OnAdvertisingReport(const AdvertisingReport &report) const
Definition gap.hpp:667
virtual void OnPeriodicAdvertisingReport(ConnectionHandle sync_handle, int8_t tx_power, int8_t rssi, uint8_t data_status, const uint8_t *data, uint8_t data_length) const
Definition gap.hpp:711
const uint8_t * data
Definition gap.hpp:548
uint8_t advertising_sid
Definition gap.hpp:528
AdvertisingEventType advertising_event_type
Definition gap.hpp:512
Phy primary_phy
Definition gap.hpp:520
BleAddress address
Definition gap.hpp:516
int8_t tx_power
Definition gap.hpp:532
uint16_t periodic_advertising_interval
Definition gap.hpp:540
Phy secondary_phy
Definition gap.hpp:524
int8_t rssi
Definition gap.hpp:536
uint8_t data_length
Definition gap.hpp:552
BleAddress direct_address
Definition gap.hpp:544
friend std::ostream & operator<<(std::ostream &os, const ExtendedAdvertisingReport &ear)
Definition gap.hpp:556
uint16_t device_id_vendor_id
Definition gap.hpp:592
uint8_t name_len
Definition gap.hpp:612
bool name_available
Definition gap.hpp:604
const uint8_t * name
Definition gap.hpp:608
uint32_t class_of_device
Definition gap.hpp:568
friend std::ostream & operator<<(std::ostream &os, const InquiryResult &ir)
uint16_t device_id_version
Definition gap.hpp:600
int8_t rssi
Definition gap.hpp:580
bool rssi_available
Definition gap.hpp:576
BleAddress address
Definition gap.hpp:560
uint16_t device_id_vendor_id_source
Definition gap.hpp:588
uint16_t device_id_product_id
Definition gap.hpp:596
bool device_id_available
Definition gap.hpp:584
uint8_t page_scan_repetition_mode
Definition gap.hpp:564
uint16_t clock_offset
Definition gap.hpp:572
uint16_t max_interval
Maximum connection interval (unit: 1.25 ms).
Definition gap.hpp:1010
uint16_t slave_latency
Slave latency (number of connection events to skip).
Definition gap.hpp:1014
uint16_t min_interval
Minimum connection interval (unit: 1.25 ms).
Definition gap.hpp:1006
uint16_t supervision_timeout
Supervision timeout (unit: 10 ms).
Definition gap.hpp:1020