Come correggere Errore 259 sui programmi ESP32 per Bluetooth

Pubblicato su News il 16/06/2024 da sebadima ‐ 2 min di lettura

Come correggere Errore 259 sui programmi ESP32 per Bluetooth

Descrizione generale

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.

Un esempio dell’errore 259

### Debug Message

E (912) wifi_prov_scheme_ble: bt_mem_release of classic BT failed 259
I (920) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
I (1022) wifi:mode : sta (ac:0b:fb:6c:f4:8c)
I (1023) wifi:enable tsf
I (1024) wifi:Set ps type: 1

E (1027) simple_ble: simple_ble_start enable controller failed 259
E (1028) protocomm_ble: simple_ble_start failed w/ error code 0x103
E (1035) wifi_prov_scheme_ble: Failed to start protocomm BLE service
E (1041) wifi_prov_mgr: Failed to start service

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:

#ifdef CONFIG_BT_ENABLED
    if(!btInUse()){
        esp_bt_controller_mem_release(ESP_BT_MODE_BTDM);
    }
#endif

Come risolvere l’Errore 259 su ESP32

Per far funzionare il codice di esempio di provisioning, la chiamata a esp_bt_controller_mem_release NON deve essere chiamata in initArduino.

Risoluzione dell’errore step by step

  • Trova il file esp32-hal-misc.c
  • Lancia il tuo editor preferito
  • Trova la riga 266
  • Commenta con “//” la linea: “esp_bt_controller_mem_release(ESP_BT_MODE_BTDM);”
  • Salva il file e ricompila con “Make” i programmi affetti dall’errore “simple_ble_start enable controller failed 259”.

    266 #ifdef CONFIG_BT_ENABLED
    267     if(!btInUse()){
    268         //esp_bt_controller_mem_release(ESP_BT_MODE_BTDM);
    269     }
    270 #endif
    271     init();
    272     initVariant();
    273 }
    274 



Robotdazero.it - post - R.163.0.5.0