mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 12:37:01 +03:00
fix "join" command
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include "esp_console.h"
|
#include "esp_console.h"
|
||||||
#include "argtable3/argtable3.h"
|
#include "argtable3/argtable3.h"
|
||||||
#include "freertos/FreeRTOS.h"
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/timers.h"
|
||||||
#include "freertos/event_groups.h"
|
#include "freertos/event_groups.h"
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "tcpip_adapter.h"
|
#include "tcpip_adapter.h"
|
||||||
@@ -99,8 +100,6 @@ static void initialise_wifi(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tcpip_adapter_init();
|
tcpip_adapter_init();
|
||||||
// Now moved to esp_app_main: wifi_event_group = xEventGroupCreate();
|
|
||||||
ESP_ERROR_CHECK(esp_event_loop_create_default());
|
|
||||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||||
ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
|
ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
|
||||||
ESP_ERROR_CHECK( esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &event_handler, NULL) );
|
ESP_ERROR_CHECK( esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &event_handler, NULL) );
|
||||||
@@ -112,8 +111,12 @@ static void initialise_wifi(void)
|
|||||||
led_blink(LED_GREEN, 250, 250);
|
led_blink(LED_GREEN, 250, 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool wifi_join(const char *ssid, const char *pass, int timeout_ms)
|
static void wifi_join(void *arg)
|
||||||
{
|
{
|
||||||
|
const char *ssid = join_args.ssid->sval[0];
|
||||||
|
const char *pass = join_args.password->sval[0];
|
||||||
|
int timeout_ms = join_args.timeout->ival[0];
|
||||||
|
|
||||||
initialise_wifi();
|
initialise_wifi();
|
||||||
wifi_config_t wifi_config = { 0 };
|
wifi_config_t wifi_config = { 0 };
|
||||||
strncpy((char *) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid));
|
strncpy((char *) wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid));
|
||||||
@@ -129,7 +132,12 @@ static bool wifi_join(const char *ssid, const char *pass, int timeout_ms)
|
|||||||
|
|
||||||
int bits = xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT,
|
int bits = xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT,
|
||||||
pdFALSE, pdTRUE, timeout_ms / portTICK_PERIOD_MS);
|
pdFALSE, pdTRUE, timeout_ms / portTICK_PERIOD_MS);
|
||||||
return (bits & CONNECTED_BIT) != 0;
|
|
||||||
|
if (bits & CONNECTED_BIT) {
|
||||||
|
ESP_LOGI(__func__, "Connected");
|
||||||
|
} else {
|
||||||
|
ESP_LOGW(__func__, "Connection timed out");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//static int set_auto_connect(int argc, char **argv)
|
//static int set_auto_connect(int argc, char **argv)
|
||||||
@@ -172,14 +180,9 @@ static int connect(int argc, char **argv)
|
|||||||
join_args.timeout->ival[0] = JOIN_TIMEOUT_MS;
|
join_args.timeout->ival[0] = JOIN_TIMEOUT_MS;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool connected = wifi_join(join_args.ssid->sval[0],
|
// need to use that trick to make sure we use internal stack
|
||||||
join_args.password->sval[0],
|
xTimerStart(xTimerCreate("wifi_join", 1, pdFALSE, NULL, wifi_join), portMAX_DELAY);
|
||||||
join_args.timeout->ival[0]);
|
|
||||||
if (!connected) {
|
|
||||||
ESP_LOGW(__func__, "Connection timed out");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
ESP_LOGI(__func__, "Connected");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void register_wifi_join()
|
void register_wifi_join()
|
||||||
|
|||||||
Reference in New Issue
Block a user