esp32/modnetwork: Fix STA/AP activate/deactivate for new IDF API.
WIFI_MODE_NULL is no longer supported by the ESP IDF, instead one must use esp_wifi_start/esp_wifi_stop.
This commit is contained in:
parent
c97607db5c
commit
cdaace1fdf
|
@ -118,6 +118,9 @@ STATIC const wlan_if_obj_t wlan_ap_obj = {{&wlan_if_type}, WIFI_IF_AP};
|
|||
//static wifi_config_t wifi_ap_config = {{{0}}};
|
||||
static wifi_config_t wifi_sta_config = {{{0}}};
|
||||
|
||||
// Set to "true" if esp_wifi_start() was called
|
||||
static bool wifi_started = false;
|
||||
|
||||
// Set to "true" if the STA interface is requested to be connected by the
|
||||
// user, used for automatic reassociation.
|
||||
static bool wifi_sta_connected = false;
|
||||
|
@ -197,9 +200,6 @@ STATIC mp_obj_t get_wlan(size_t n_args, const mp_obj_t *args) {
|
|||
ESP_EXCEPTIONS( esp_wifi_init(&cfg) );
|
||||
ESP_EXCEPTIONS( esp_wifi_set_storage(WIFI_STORAGE_RAM) );
|
||||
ESP_LOGD("modnetwork", "Initialized");
|
||||
ESP_EXCEPTIONS( esp_wifi_set_mode(0) );
|
||||
ESP_EXCEPTIONS( esp_wifi_start() );
|
||||
ESP_LOGD("modnetwork", "Started");
|
||||
initialized = 1;
|
||||
}
|
||||
|
||||
|
@ -233,16 +233,32 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(esp_initialize_obj, esp_initialize);
|
|||
#endif
|
||||
|
||||
STATIC mp_obj_t esp_active(size_t n_args, const mp_obj_t *args) {
|
||||
|
||||
wlan_if_obj_t *self = MP_OBJ_TO_PTR(args[0]);
|
||||
|
||||
wifi_mode_t mode;
|
||||
ESP_EXCEPTIONS( esp_wifi_get_mode(&mode) );
|
||||
if (!wifi_started) {
|
||||
mode = WIFI_MODE_NULL;
|
||||
} else {
|
||||
ESP_EXCEPTIONS(esp_wifi_get_mode(&mode));
|
||||
}
|
||||
|
||||
int bit = (self->if_id == WIFI_IF_STA) ? WIFI_MODE_STA : WIFI_MODE_AP;
|
||||
|
||||
if (n_args > 1) {
|
||||
bool active = mp_obj_is_true(args[1]);
|
||||
mode = active ? (mode | bit) : (mode & ~bit);
|
||||
ESP_EXCEPTIONS( esp_wifi_set_mode(mode) );
|
||||
bool active = mp_obj_is_true(args[1]);
|
||||
mode = active ? (mode | bit) : (mode & ~bit);
|
||||
if (mode == WIFI_MODE_NULL) {
|
||||
if (wifi_started) {
|
||||
ESP_EXCEPTIONS(esp_wifi_stop());
|
||||
wifi_started = false;
|
||||
}
|
||||
} else {
|
||||
ESP_EXCEPTIONS(esp_wifi_set_mode(mode));
|
||||
if (!wifi_started) {
|
||||
ESP_EXCEPTIONS(esp_wifi_start());
|
||||
wifi_started = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (mode & bit) ? mp_const_true : mp_const_false;
|
||||
|
|
Loading…
Reference in New Issue