fix bt_hfp to idf 5
This commit is contained in:
parent
0f3f04054c
commit
64dff2dc05
|
|
@ -3,6 +3,8 @@
|
|||
*
|
||||
* ESP32 agiert als Audio Gateway (AG) - die Rolle einer Telefonanlage
|
||||
* Headset ist das HF (Hands-Free) Device
|
||||
*
|
||||
* Angepasst für ESP-IDF 5.x
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
|
@ -62,15 +64,9 @@ static void hf_ag_callback(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
|
|||
}
|
||||
break;
|
||||
|
||||
case ESP_HF_BVRA_EVT:
|
||||
// Voice Recognition aktiviert/deaktiviert
|
||||
ESP_LOGI(TAG, "Voice Recognition: %s",
|
||||
param->vra_rep.value ? "aktiviert" : "deaktiviert");
|
||||
break;
|
||||
|
||||
case ESP_HF_VOLUME_CONTROL_EVT:
|
||||
ESP_LOGI(TAG, "Volume %s: %d",
|
||||
param->volume_control.type == ESP_HF_VOLUME_CONTROL_TARGET_SPK ?
|
||||
param->volume_control.type == ESP_HF_VOLUME_TYPE_SPK ?
|
||||
"Speaker" : "Mic",
|
||||
param->volume_control.volume);
|
||||
break;
|
||||
|
|
@ -97,7 +93,13 @@ static void hf_ag_callback(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
|
|||
case ESP_HF_CLCC_RESPONSE_EVT:
|
||||
// Call List Request - keine aktiven Anrufe melden
|
||||
ESP_LOGD(TAG, "CLCC Request");
|
||||
esp_hf_ag_clcc_response(s_connected_peer, 0, 0, 0, 0, 0, NULL);
|
||||
// ESP-IDF 5: esp_hf_ag_clcc_response hat mehr Parameter
|
||||
esp_hf_ag_clcc_response(s_connected_peer, 0,
|
||||
ESP_HF_CURRENT_CALL_DIRECTION_INCOMING,
|
||||
ESP_HF_CURRENT_CALL_STATUS_ACTIVE,
|
||||
ESP_HF_CURRENT_CALL_MODE_VOICE,
|
||||
ESP_HF_CURRENT_CALL_MPTY_TYPE_SINGLE,
|
||||
NULL, ESP_HF_CALL_ADDR_TYPE_UNKNOWN);
|
||||
break;
|
||||
|
||||
case ESP_HF_COPS_RESPONSE_EVT:
|
||||
|
|
@ -109,7 +111,10 @@ static void hf_ag_callback(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
|
|||
case ESP_HF_CNUM_RESPONSE_EVT:
|
||||
// Subscriber Number Request
|
||||
ESP_LOGD(TAG, "CNUM Request");
|
||||
esp_hf_ag_cnum_response(s_connected_peer, NULL, 0);
|
||||
// ESP-IDF 5: esp_hf_ag_cnum_response hat mehr Parameter
|
||||
esp_hf_ag_cnum_response(s_connected_peer, NULL,
|
||||
ESP_HF_CALL_ADDR_TYPE_UNKNOWN,
|
||||
ESP_HF_SUBSCRIBER_SERVICE_TYPE_VOICE);
|
||||
break;
|
||||
|
||||
case ESP_HF_VTS_RESPONSE_EVT:
|
||||
|
|
@ -137,8 +142,8 @@ static void hf_ag_callback(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
|
|||
case ESP_HF_DIAL_EVT:
|
||||
// Dial (ATD, ATD>, ATD>mem)
|
||||
if (param->out_call.type == ESP_HF_DIAL_MEM) {
|
||||
ESP_LOGI(TAG, "Headset: Wähle Speicher %d", param->out_call.num_or_loc);
|
||||
} else if (param->out_call.type == ESP_HF_DIAL_VOIP) {
|
||||
ESP_LOGI(TAG, "Headset: Wähle Speicher %s", param->out_call.num_or_loc);
|
||||
} else if (param->out_call.type == ESP_HF_DIAL_NUM) {
|
||||
ESP_LOGI(TAG, "Headset: Wähle %s", param->out_call.num_or_loc);
|
||||
} else {
|
||||
ESP_LOGI(TAG, "Headset: Wahlwiederholung");
|
||||
|
|
@ -149,7 +154,7 @@ static void hf_ag_callback(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
|
|||
case ESP_HF_WBS_RESPONSE_EVT:
|
||||
// Wide Band Speech (mSBC Codec)
|
||||
ESP_LOGI(TAG, "WBS Codec: %s",
|
||||
param->wbs_rep.codec == ESP_HF_WBS_PLCM ? "mSBC" : "CVSD");
|
||||
param->wbs_rep.codec == ESP_HF_WBS_YES ? "mSBC" : "CVSD");
|
||||
break;
|
||||
|
||||
case ESP_HF_BCS_RESPONSE_EVT:
|
||||
|
|
@ -164,15 +169,16 @@ static void hf_ag_callback(esp_hf_cb_event_t event, esp_hf_cb_param_t *param)
|
|||
}
|
||||
|
||||
// Audio Data Callback (eingehend vom Headset - Mikrofon)
|
||||
static uint32_t hf_ag_incoming_data_callback(uint8_t *buf, uint32_t len)
|
||||
// ESP-IDF 5: Signatur geändert zu void
|
||||
static void hf_ag_incoming_data_callback(const uint8_t *buf, uint32_t len)
|
||||
{
|
||||
// Audio-Daten vom Headset-Mikrofon weiterleiten
|
||||
bt_manager_notify_audio_data(buf, len);
|
||||
return len;
|
||||
}
|
||||
|
||||
// Audio Data Request (ausgehend zum Headset - Speaker)
|
||||
static void hf_ag_outgoing_data_callback(uint8_t *buf, uint32_t len)
|
||||
// ESP-IDF 5: Signatur geändert zu uint32_t return
|
||||
static uint32_t hf_ag_outgoing_data_callback(uint8_t *buf, uint32_t len)
|
||||
{
|
||||
if (s_audio_out_ringbuf) {
|
||||
size_t item_size;
|
||||
|
|
@ -185,13 +191,12 @@ static void hf_ag_outgoing_data_callback(uint8_t *buf, uint32_t len)
|
|||
if (item_size < len) {
|
||||
memset(buf + item_size, 0, len - item_size);
|
||||
}
|
||||
} else {
|
||||
return len;
|
||||
}
|
||||
}
|
||||
// Keine Daten - Stille senden
|
||||
memset(buf, 0, len);
|
||||
}
|
||||
} else {
|
||||
memset(buf, 0, len);
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
esp_err_t bt_hfp_init(void)
|
||||
|
|
@ -267,7 +272,10 @@ esp_err_t bt_hfp_connect(const esp_bd_addr_t address)
|
|||
bt_addr_to_str(address, addr_str, sizeof(addr_str));
|
||||
ESP_LOGI(TAG, "HFP Connect: %s", addr_str);
|
||||
|
||||
return esp_hf_ag_slc_connect(address);
|
||||
// Cast um const zu entfernen (ESP-IDF API erwartet non-const)
|
||||
esp_bd_addr_t addr_copy;
|
||||
memcpy(addr_copy, address, ESP_BD_ADDR_LEN);
|
||||
return esp_hf_ag_slc_connect(addr_copy);
|
||||
}
|
||||
|
||||
esp_err_t bt_hfp_disconnect(const esp_bd_addr_t address)
|
||||
|
|
@ -280,7 +288,10 @@ esp_err_t bt_hfp_disconnect(const esp_bd_addr_t address)
|
|||
bt_hfp_audio_disconnect();
|
||||
}
|
||||
|
||||
return esp_hf_ag_slc_disconnect(address);
|
||||
// Cast um const zu entfernen
|
||||
esp_bd_addr_t addr_copy;
|
||||
memcpy(addr_copy, address, ESP_BD_ADDR_LEN);
|
||||
return esp_hf_ag_slc_disconnect(addr_copy);
|
||||
}
|
||||
|
||||
esp_err_t bt_hfp_audio_connect(void)
|
||||
|
|
@ -322,3 +333,13 @@ esp_err_t bt_hfp_send_audio(const uint8_t* data, size_t len)
|
|||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
bool bt_hfp_is_connected(void)
|
||||
{
|
||||
return s_service_connected;
|
||||
}
|
||||
|
||||
bool bt_hfp_is_audio_connected(void)
|
||||
{
|
||||
return s_audio_connected;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue