146 lines
3.4 KiB
C
146 lines
3.4 KiB
C
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#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
|