#pragma once #include #include #include "esp_err.h" #include "esp_bt_defs.h" #ifdef __cplusplus extern "C" { #endif // Bluetooth-Gerätestatus typedef enum { BT_DEVICE_STATE_UNKNOWN = 0, BT_DEVICE_STATE_DISCOVERED, BT_DEVICE_STATE_PAIRING, BT_DEVICE_STATE_PAIRED, BT_DEVICE_STATE_CONNECTING, BT_DEVICE_STATE_CONNECTED, BT_DEVICE_STATE_DISCONNECTED } bt_device_state_t; // Bluetooth Audio-Status typedef enum { BT_AUDIO_STATE_IDLE = 0, BT_AUDIO_STATE_OPENING, BT_AUDIO_STATE_OPEN, BT_AUDIO_STATE_STREAMING } bt_audio_state_t; // Entdecktes Bluetooth-Gerät typedef struct { esp_bd_addr_t address; char name[32]; int rssi; uint32_t cod; // Class of Device bool is_headset; } bt_discovered_device_t; // Headset-Button Events typedef enum { BT_BUTTON_NONE = 0, BT_BUTTON_ANSWER, // Anruf annehmen BT_BUTTON_REJECT, // Anruf ablehnen BT_BUTTON_HANGUP, // Anruf beenden BT_BUTTON_REDIAL, // Wahlwiederholung BT_BUTTON_VOLUME_UP, BT_BUTTON_VOLUME_DOWN, BT_BUTTON_MUTE } bt_button_event_t; // Event-Callbacks typedef void (*bt_device_callback_t)(bt_device_state_t state, const esp_bd_addr_t address); typedef void (*bt_discovery_callback_t)(const bt_discovered_device_t* device); typedef void (*bt_audio_callback_t)(bt_audio_state_t state); typedef void (*bt_button_callback_t)(bt_button_event_t event); typedef void (*bt_audio_data_callback_t)(const uint8_t* data, size_t len); /** * Initialisiert den Bluetooth-Manager */ esp_err_t bt_manager_init(void); /** * Deinitalisiert den Bluetooth-Manager */ esp_err_t bt_manager_deinit(void); /** * Startet die Bluetooth-Gerätesuche */ esp_err_t bt_manager_start_discovery(void); /** * Stoppt die Bluetooth-Gerätesuche */ esp_err_t bt_manager_stop_discovery(void); /** * Pairt mit einem Gerät */ esp_err_t bt_manager_pair(const esp_bd_addr_t address); /** * Entfernt ein gepairtes Gerät */ esp_err_t bt_manager_unpair(const esp_bd_addr_t address); /** * Verbindet mit einem gepairten Headset */ esp_err_t bt_manager_connect(const esp_bd_addr_t address); /** * Trennt die Verbindung zu einem Headset */ esp_err_t bt_manager_disconnect(const esp_bd_addr_t address); /** * Trennt alle verbundenen Geräte */ esp_err_t bt_manager_disconnect_all(void); /** * Gibt zurück ob ein Headset verbunden ist */ bool bt_manager_is_connected(void); /** * Gibt die Adresse des verbundenen Headsets zurück */ esp_err_t bt_manager_get_connected_device(esp_bd_addr_t address); /** * Setzt die Sichtbarkeit */ esp_err_t bt_manager_set_discoverable(bool discoverable); /** * Sendet Audio-Daten zum Headset */ esp_err_t bt_manager_send_audio(const uint8_t* data, size_t len); /** * Registriert Callbacks */ void bt_manager_register_device_callback(bt_device_callback_t callback); void bt_manager_register_discovery_callback(bt_discovery_callback_t callback); void bt_manager_register_audio_callback(bt_audio_callback_t callback); void bt_manager_register_button_callback(bt_button_callback_t callback); void bt_manager_register_audio_data_callback(bt_audio_data_callback_t callback); /** * Konvertiert BD_ADDR zu String */ void bt_addr_to_str(const esp_bd_addr_t addr, char* str, size_t len); /** * Konvertiert String zu BD_ADDR */ esp_err_t bt_str_to_addr(const char* str, esp_bd_addr_t addr); #ifdef __cplusplus } #endif