feat(bt): reconnexion HFP auto au boot
Repo State / repo-state (push) Failing after 30s

This commit is contained in:
clement
2026-06-19 15:33:49 +02:00
parent 7956cebde1
commit f8e3dfb442
+30
View File
@@ -167,6 +167,33 @@ static void hf_cb(esp_hf_client_cb_event_t event, esp_hf_client_cb_param_t *para
}
}
/* ---- Reconnexion automatique ----
* Tant que le SLC n'est pas etabli, on tente periodiquement de se reconnecter
* au dernier appareil appaire. Le mobile (deja bonde) accepte la connexion des
* qu'il est a portee -> reconnexion auto sans action utilisateur. On ne tente
* QUE lorsque deconnecte (evite la collision RFCOMM avec un connect du mobile). */
static void reconnect_task(void *arg)
{
(void)arg;
for (;;) {
vTaskDelay(pdMS_TO_TICKS(8000)); /* intervalle de tentative */
if (s_slc) {
continue; /* deja connecte */
}
int num = esp_bt_gap_get_bond_device_num();
if (num <= 0) {
continue; /* aucun appareil appaire */
}
int n = (num > 4) ? 4 : num;
esp_bd_addr_t list[4];
if (esp_bt_gap_get_bond_device_list(&n, list) != ESP_OK || n <= 0) {
continue;
}
ESP_LOGI(TAG, "reconnexion HFP auto vers l'appareil appaire...");
esp_hf_client_connect(list[0]); /* le mobile accepte s'il est a portee */
}
}
/* ---- API publique ---- */
esp_err_t bt_hfp_init(bt_hfp_event_cb_t cb)
@@ -226,6 +253,9 @@ esp_err_t bt_hfp_init(bt_hfp_event_cb_t cb)
esp_bt_gap_set_scan_mode(ESP_BT_CONNECTABLE, ESP_BT_GENERAL_DISCOVERABLE)
);
/* Tache de reconnexion auto vers le dernier appareil appaire. */
xTaskCreate(reconnect_task, "bt_reconnect", 3072, NULL, 4, NULL);
ESP_LOGI(TAG, "bt_hfp pret — appairer le mobile sur 'RTC_BL_PHONE'");
return ESP_OK;
}