43 uint8_t
mac[MAC_ADDRESS_SIZE];
70static constexpr uint8_t MAX_SCAN_REPORT_QUEUE_SIZE = 64;
74 void setup()
override;
88#ifdef BK72XX_BLE_SCAN_LISTENER_COUNT
111 void enqueue_scan_report(
const uint8_t *mac, int8_t rssi, uint8_t addr_type, uint8_t evt_type,
const uint8_t *data,
123#ifdef BK72XX_BLE_SCAN_LISTENER_COUNT
Minimal static vector - saves memory by avoiding std::vector overhead.
uint32_t teardown_stuck_log_ms_
ScanOpResult last_scan_result() const
Last reconciliation outcome; on FAILED the consumer's retry policy owns recovery.
void dump_config() override
void register_scan_listener(BLEScanListener *listener)
Register a consumer for scan reports (delivered on the main task via loop()).
uint8_t scan_activity_idx_
uint8_t ble_mac_[MAC_ADDRESS_SIZE]
void reset_teardown_episode_()
ScanOpResult last_result_
float get_setup_priority() const override
ScanOpResult advance_stop_(BdkActivityState state, bool ready)
void release_activity_(BdkActivityState state)
StaticVector< BLEScanListener *, BK72XX_BLE_SCAN_LISTENER_COUNT > scan_listeners_
void enable()
Bring up the BDK BLE stack (one-time; the BDK has no teardown path).
uint32_t pending_since_ms_
esphome::LockFreeQueue< BLEScanReport, MAX_SCAN_REPORT_QUEUE_SIZE > report_queue_
void enqueue_scan_report(const uint8_t *mac, int8_t rssi, uint8_t addr_type, uint8_t evt_type, const uint8_t *data, uint16_t data_len)
Internal: buffer one controller report (BDK notice callback, BLE task context — bounded copy under th...
void get_mac_lsb_first(uint8_t out[MAC_ADDRESS_SIZE]) const
Controller BLE address, least-significant octet first (BLE convention).
ScanOpResult advance_start_(BdkActivityState state, bool ready)
esphome::EventPool< BLEScanReport, MAX_SCAN_REPORT_QUEUE_SIZE - 1 > report_pool_
uint32_t last_advance_ms_
void set_enable_on_boot(bool enable_on_boot)
bool teardown_stuck_(uint32_t now)
bool flush_pending_stop(uint32_t timeout_ms)
Drive a requested stop until the radio is observed idle, bounded by timeout_ms (for OTA).
uint32_t teardown_since_ms_
void scan_stop()
Request the scanner stopped and the activity released; steps that cannot run yet are completed from l...
Consumer interface for controller scan reports.
~BLEScanListener()=default
virtual void on_scan_report(const BLEScanReport &report)=0
ScanOpResult
Outcome of one reconciliation step.
@ SETTLED
The request is reached: scan observed running, or stopped with the activity fully released.
@ PENDING
A step is in flight; loop() keeps advancing — call scan_start() again to learn the outcome.
constexpr uint8_t INVALID_ACTIVITY_IDX
Activity index value marking "no scan activity", the BDK's own convention (asserted against its symbo...
BdkActivityState
Scan-relevant controller activity states, read live from the SDK.
One advertisement report from the controller.
uint8_t mac[MAC_ADDRESS_SIZE]
One scan request: mode plus timing, in BLE units (0.625 ms).
bool operator==(const ScanParams &) const =default