L’esempio fornito da Espressif per il Provisioning delle password Wi-FI con Bluetooth pare non funzionare correttamente su Platformio nella ultima release delle librerie. Vediamo come correggere velocemente questo errore …
L’uso di esp_bt_controller_mem_release non sembra corretto in esp32-hal-misc.c. Nella funzione initArduino () se hai impostato BT_ENABLED in sdkconfig, chiamerà btInUse per determinare se rilasciare la memoria BT. Ci sono due problemi.
Innanzitutto, utilizzando lo schizzo di esempio riportato di seguito (una versione leggermente modificata dell’esempio di provisioning incluso in questa libreria) non sembra collegarsi correttamente. L’esempio non funzionerà correttamente poiché la memoria BT viene rilasciata in initArduino, quindi il tentativo di abilitare BT in seguito per il provisioning non riesce. Il collegamento debole non funziona come previsto.
In secondo luogo, anche questo modello sembra sbagliato. Il codice in initArduino() implicherebbe che si potrebbe avere CONFIG_BT_ENABLED ma btInUse () restituisce false che, per il codice, non sarebbe mai possibile. Se CONFIG_BT_ENABLED è sì allora esp32-hal-bt.c dichiara btInUse () per restituire sempre true. Quindi non c’è uno scenario in cui se la configurazione è abilitata btInUse() dovrebbe restituire false (anche se lo fa per il primo problema menzionato sopra).
Questo rende il seguente blocco di codice in esp32-hal-misc.c un poco sconcertante:
Per far funzionare il codice di esempio di provisioning, la chiamata a esp_bt_controller_mem_release NON deve essere chiamata in initArduino.
Robotdazero.it - post - R.163.1.0.2