19#include <esp_bt_device.h>
22namespace bluetooth_proxy {
24static const esp_err_t ESP_GATT_NOT_CONNECTED = -1;
26using namespace esp32_ble_client;
34static const uint32_t LEGACY_ACTIVE_CONNECTIONS_VERSION = 5;
35static const uint32_t LEGACY_PASSIVE_ONLY_VERSION = 1;
55 bool parse_devices(esp_ble_gap_cb_param_t::ble_scan_result_evt_param *advertisements,
size_t count)
override;
57 void setup()
override;
93 bd_addr[0] = (
address >> 40) & 0xff;
94 bd_addr[1] = (
address >> 32) & 0xff;
95 bd_addr[2] = (
address >> 24) & 0xff;
96 bd_addr[3] = (
address >> 16) & 0xff;
97 bd_addr[4] = (
address >> 8) & 0xff;
98 bd_addr[5] = (
address >> 0) & 0xff;
106 return LEGACY_ACTIVE_CONNECTIONS_VERSION;
108 return LEGACY_PASSIVE_ONLY_VERSION;
127 const uint8_t *mac = esp_bt_dev_get_address();
128 return str_snprintf(
"%02X:%02X:%02X:%02X:%02X:%02X", 17, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
void send_gatt_services_done(uint64_t address)
void bluetooth_gatt_read(const api::BluetoothGATTReadRequest &msg)
int get_bluetooth_connections_limit()
void bluetooth_gatt_send_services(const api::BluetoothGATTGetServicesRequest &msg)
esp32_ble_tracker::AdvertisementParserType get_advertisement_parser_type() override
void send_device_connection(uint64_t address, bool connected, uint16_t mtu=0, esp_err_t error=ESP_OK)
void send_device_unpairing(uint64_t address, bool success, esp_err_t error=ESP_OK)
void send_device_pairing(uint64_t address, bool paired, esp_err_t error=ESP_OK)
api::APIConnection * get_api_connection()
void bluetooth_device_request(const api::BluetoothDeviceRequest &msg)
bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override
void bluetooth_gatt_write_descriptor(const api::BluetoothGATTWriteDescriptorRequest &msg)
void send_bluetooth_scanner_state_(esp32_ble_tracker::ScannerState state)
void bluetooth_scanner_set_mode(bool active)
void subscribe_api_connection(api::APIConnection *api_connection, uint32_t flags)
uint32_t get_legacy_version() const
void send_gatt_error(uint64_t address, uint16_t handle, esp_err_t error)
void dump_config() override
void flush_pending_advertisements()
uint32_t get_feature_flags() const
void send_connections_free()
void set_active(bool active)
void unsubscribe_api_connection(api::APIConnection *api_connection)
void register_connection(BluetoothConnection *connection)
BluetoothConnection * get_connection_(uint64_t address, bool reserve)
int get_bluetooth_connections_free()
bool parse_devices(esp_ble_gap_cb_param_t::ble_scan_result_evt_param *advertisements, size_t count) override
void bluetooth_gatt_read_descriptor(const api::BluetoothGATTReadDescriptorRequest &msg)
void bluetooth_gatt_write(const api::BluetoothGATTWriteRequest &msg)
std::vector< BluetoothConnection * > connections_
void bluetooth_gatt_notify(const api::BluetoothGATTNotifyRequest &msg)
std::string get_bluetooth_mac_address_pretty()
static void uint64_to_bd_addr(uint64_t address, esp_bd_addr_t bd_addr)
void send_device_clear_cache(uint64_t address, bool success, esp_err_t error=ESP_OK)
api::APIConnection * api_connection_
void send_api_packet_(const esp32_ble_tracker::ESPBTDevice &device)
@ FEATURE_ACTIVE_CONNECTIONS
@ FEATURE_RAW_ADVERTISEMENTS
BluetoothProxy * global_bluetooth_proxy
BluetoothProxySubscriptionFlag
@ SUBSCRIPTION_RAW_ADVERTISEMENTS
Providing packet encoding functions for exchanging data with a remote host.
std::string str_snprintf(const char *fmt, size_t len,...)