This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user