Exemplo n.º 1
0
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;
    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);
        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;
}
Exemplo n.º 2
0
static bool espWiFiStop(){
    esp_err_t err;
    if(!_esp_wifi_started){
        return true;
    }
    _esp_wifi_started = false;
    err = esp_wifi_stop();
    if(err){
        log_e("Could not stop WiFi! %u", err);
        _esp_wifi_started = true;
        return false;
    }
    return wifiLowLevelDeinit();
}