13#if defined(USE_RP2040_BLE) && defined(USE_BLE_GATT_CLIENT)
22#ifdef USE_OTA_STATE_LISTENER
37static constexpr uint16_t RP2_GATT_MAX_SERVICES = 16;
38static constexpr uint16_t RP2_GATT_MAX_CHARACTERISTICS = 96;
39static constexpr uint16_t RP2_GATT_MAX_DESCRIPTORS = 96;
43static constexpr uint8_t RP2_GATT_MAX_NOTIFY_SUBSCRIPTIONS = 16;
47static constexpr uint16_t RP2_GATT_MAX_ATTR_LEN = 512;
69 uint8_t
data[RP2_GATT_MAX_ATTR_LEN];
73static constexpr uint8_t RP2_GATT_EVENT_QUEUE_SIZE = 8;
76static constexpr uint8_t RP2_GATT_NOTIFY_QUEUE_SIZE = 4;
79 public Parented<rp2040_ble::RP2040BLE>
80#ifdef USE_OTA_STATE_LISTENER
86 void setup()
override;
113#ifdef USE_OTA_STATE_LISTENER
203 uint16_t
mtu_{ble_device_base::DEFAULT_ATT_MTU};
Helper class to easily give an object a parent of type T.
The event surface a backend delivers completions through - the one place with genuine runtime polymor...
void enqueue_notify_irq_(uint16_t handle, const uint8_t *data, uint16_t len)
uint16_t disc_service_cursor_
static RP2GattClient * connect_owner
int read_characteristic(uint16_t handle)
uint8_t notify_subscription_count_
esphome::EventPool< RP2GattNotifyEvent, RP2_GATT_NOTIFY_QUEUE_SIZE - 1 > notify_pool_
btstack_context_callback_registration_t can_write_registration_
int issue_characteristic_query_(uint16_t service_index)
void advance_discovery_(uint8_t att_status)
bd_addr_type_t peer_addr_type_
void finish_discovery_(int error)
void handle_event_(const RP2GattEvent &event)
void finish_write_no_rsp_(uint8_t status)
uint32_t write_no_rsp_started_
void enqueue_event_irq_(RP2GattEvent::Type type, uint8_t status, uint16_t value)
void handle_connected_(uint8_t status, uint16_t con_handle)
void handle_gatt_event_irq_(uint8_t event_type, const uint8_t *packet)
static void sm_packet_handler(uint8_t type, uint16_t channel, uint8_t *packet, uint16_t size)
int write_characteristic(uint16_t handle, const uint8_t *data, uint16_t len, bool response)
static btstack_packet_callback_registration_t hci_event_registration
void cleanup_link_state_()
hci_con_handle_t con_handle_
bool cancel_gatt_disconnect()
static RP2GattClient * instance_for_con_handle(hci_con_handle_t con_handle)
static void can_write_no_rsp_trampoline(void *context)
void on_ota_global_state(ota::OTAState state, float progress, uint8_t error, ota::OTAComponent *comp) override
DiscoveryPhase discovery_phase_
uint16_t disc_char_cursor_
int read_descriptor(uint16_t handle)
bool op_in_flight_() const
static uint8_t instance_count
static void hci_packet_handler(uint8_t type, uint16_t channel, uint8_t *packet, uint16_t size)
ble_device_base::GattServiceTable get_service_table()
int connect(uint64_t address, uint8_t addr_type)
std::array< uint16_t, RP2_GATT_MAX_NOTIFY_SUBSCRIPTIONS > notify_subscriptions_
uint32_t disconnecting_started_
esphome::LockFreeQueue< RP2GattNotifyEvent, RP2_GATT_NOTIFY_QUEUE_SIZE > notify_queue_
ble_device_base::GattClientListener * listener_
int update_connection_params(uint16_t min_interval, uint16_t max_interval, uint16_t latency, uint16_t timeout)
uint32_t connect_started_
int notify_characteristic(uint16_t handle, bool enable)
static btstack_packet_callback_registration_t sm_event_registration
bool notify_subscribed_(uint16_t handle) const
gatt_client_notification_t notification_registration_
int write_descriptor(uint16_t handle, const uint8_t *data, uint16_t len)
void handle_disconnected_(uint8_t reason)
static RP2GattClient * instances[ESPHOME_BLE_GATT_CLIENT_COUNT]
void handle_query_complete_(uint8_t att_status)
void assemble_blob_irq_(uint16_t offset, const uint8_t *data, uint16_t len)
float get_setup_priority() const override
void dump_config() override
int issue_descriptor_query_(uint16_t char_index)
static void gatt_packet_handler(uint8_t type, uint16_t channel, uint8_t *packet, uint16_t size)
void release_scan_inhibit_()
void set_connection_type(ble_device_base::ConnectionType ct)
uint8_t op_buffer_[RP2_GATT_MAX_ATTR_LEN]
void set_listener(ble_device_base::GattClientListener *listener)
ble_device_base::ConnectionType connection_type_
esphome::LockFreeQueue< RP2GattEvent, RP2_GATT_EVENT_QUEUE_SIZE > event_queue_
esphome::EventPool< RP2GattEvent, RP2_GATT_EVENT_QUEUE_SIZE - 1 > event_pool_
uint32_t connect_retry_ms_
bool connect_cancel_attempted_
void fail_connection_(uint8_t reason)
Listener interface for global OTA state changes (includes OTA component pointer).
Borrowed view of the backend-owned service table.
ble_device_base::GattService services[RP2_GATT_MAX_SERVICES]
ble_device_base::GattCharacteristic characteristics[RP2_GATT_MAX_CHARACTERISTICS]
ble_device_base::GattDescriptor descriptors[RP2_GATT_MAX_DESCRIPTORS]
uint8_t data[RP2_GATT_MAX_ATTR_LEN]
spi_device_handle_t handle