Skip to content
58 changes: 41 additions & 17 deletions main/network.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,31 +116,48 @@ static esp_err_t start_sntp(void)
return esp_netif_sntp_start();
}

static void hdlr_ev(void *arg, esp_event_base_t ev_base, int32_t ev_id, void *data)
static void hdlr_ev_ip(void *arg, esp_event_base_t ev_base, int32_t ev_id, void *data)
{
// esp_err_t ret = ESP_OK;

if (ev_base == IP_EVENT && ev_id == IP_EVENT_STA_GOT_IP) {
if (ev_id == IP_EVENT_STA_GOT_IP) {
ip_event_got_ip_t *ev_ip = (ip_event_got_ip_t *)data;
ESP_LOGI(TAG, "received IP: " IPSTR, IP2STR(&ev_ip->ip_info.ip));
xEventGroupSetBits(hdl_evg, WIFI_BIT_CONNECTED);
return;
}

if (ev_base == WIFI_EVENT && ev_id == WIFI_EVENT_STA_DISCONNECTED) {
if (!restarting) {
ESP_LOGI(TAG, "disconnected from AP, retrying");
esp_wifi_connect();
}
return;
}
ESP_LOGI(TAG, "unhandled network event ev_base='%s' ev_id='%" PRId32 "'", ev_base, ev_id);
}

if (ev_base == WIFI_EVENT && ev_id == WIFI_EVENT_STA_START) {
ESP_LOGI(TAG, "WIFI_EVENT_STA_START");
return;
}
static void hdlr_ev_wifi(void *arg, esp_event_base_t ev_base, int32_t ev_id, void *data)
{
switch (ev_id) {
case WIFI_EVENT_STA_CONNECTED:
wifi_event_sta_connected_t *ev_data_connected = (wifi_event_sta_connected_t *)data;
ESP_LOGI(TAG, "connected to AP (BSSID='" MACSTR "' SSID='%s' channel='%" PRIu8 "')",
MAC2STR(ev_data_connected->bssid), ev_data_connected->ssid, ev_data_connected->channel);
break;

case WIFI_EVENT_STA_DISCONNECTED:
wifi_event_sta_disconnected_t *ev_data_disconnected = (wifi_event_sta_disconnected_t *)data;
ESP_LOGI(TAG, "disconnected from AP (BSSID='" MACSTR "' SSID='%s' reason='%" PRIu8 "' rssi='%'" PRId8 "')",
MAC2STR(ev_data_disconnected->bssid), ev_data_disconnected->ssid, ev_data_disconnected->reason,
ev_data_disconnected->rssi);
if (!restarting) {
ESP_LOGI(TAG, "reconnecting");
esp_wifi_connect();
}
break;

ESP_LOGI(TAG, "unhandled network event ev_base='%s' ev_id='%" PRId32 "'", ev_base, ev_id);
case WIFI_EVENT_STA_START:
ESP_LOGI(TAG, "WIFI_EVENT_STA_START");
break;

default:
ESP_LOGI(TAG, "unhandled network event ev_base='%s' ev_id='%" PRId32 "'", ev_base, ev_id);
break;
}
}

#ifndef CONFIG_WILLOW_ETHERNET
Expand All @@ -158,13 +175,13 @@ esp_err_t init_wifi(const char *psk, const char *ssid)
return ESP_FAIL;
}

ret = esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &hdlr_ev, NULL);
ret = esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &hdlr_ev_ip, NULL);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "failed to register IP event handler: %s", esp_err_to_name(ret));
return ret;
}

ret = esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &hdlr_ev, NULL);
ret = esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &hdlr_ev_wifi, NULL);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "failed to register Wi-Fi event handler: %s", esp_err_to_name(ret));
return ret;
Expand All @@ -185,7 +202,14 @@ esp_err_t init_wifi(const char *psk, const char *ssid)
return ret;
}

wifi_config_t cfg_wifi = {};
wifi_config_t cfg_wifi = {
.sta = {
.btm_enabled = 1,
.mbo_enabled = 1,
.rm_enabled = 1,
},
};

strlcpy((char *)cfg_wifi.sta.password, psk, sizeof(cfg_wifi.sta.password));
strlcpy((char *)cfg_wifi.sta.ssid, ssid, sizeof(cfg_wifi.sta.ssid));

Expand Down
65 changes: 34 additions & 31 deletions sdkconfig.defaults
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,13 @@ CONFIG_ADC_SUPPRESS_DEPRECATE_WARN=y
CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF=y
CONFIG_COMPILER_OPTIMIZATION_PERF=y
# CONFIG_ETH_USE_SPI_ETHERNET is not set
CONFIG_ESP32S3_DATA_CACHE_64KB=y
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB=y
CONFIG_SPIRAM=y
CONFIG_ESP32_S3_BOX_3_BOARD=y
# CONFIG_ESP_WIFI_NVS_ENABLED is not set
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
CONFIG_ESP_WIFI_AMSDU_TX_ENABLED=y
CONFIG_ESP_WIFI_RX_BA_WIN=6
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB=y
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH=y
CONFIG_ESP_MAIN_TASK_STACK_SIZE=16384
# CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE is not set
Expand All @@ -28,7 +22,15 @@ CONFIG_ESP_TASK_WDT_TIMEOUT_S=10
CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS=y
CONFIG_ESP_TLS_INSECURE=y
CONFIG_ESP_TLS_SKIP_SERVER_CERT_VERIFY=y
CONFIG_ESP_WIFI_11KV_SUPPORT=y
CONFIG_ESP_WIFI_AMSDU_TX_ENABLED=y
CONFIG_ESP_WIFI_MBO_SUPPORT=y
# CONFIG_ESP_WIFI_NVS_ENABLED is not set
CONFIG_ESP_WIFI_RX_BA_WIN=6
CONFIG_ESP_WIFI_SCAN_CACHE=y
# CONFIG_ESP_WIFI_SOFTAP_SUPPORT is not set
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
# CONFIG_ETH_USE_SPI_ETHERNET is not set
CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y
CONFIG_FREERTOS_HZ=1000
CONFIG_GDMA_CTRL_FUNC_IN_IRAM=y
Expand All @@ -40,61 +42,61 @@ CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y
# CONFIG_LV_BUILD_EXAMPLES is not set
CONFIG_LV_COLOR_16_SWAP=y
CONFIG_LV_DISP_DEF_REFR_PERIOD=10
CONFIG_LV_FS_POSIX_LETTER=65
CONFIG_LV_FS_POSIX_PATH=""
CONFIG_LV_FS_POSIX_CACHE_SIZE=0
CONFIG_LV_FONT_DEFAULT_MONTSERRAT_24=y
# CONFIG_LV_FONT_MONTSERRAT_14 is not set
CONFIG_LV_FS_POSIX_CACHE_SIZE=0
CONFIG_LV_FS_POSIX_LETTER=65
CONFIG_LV_FS_POSIX_PATH=""
# CONFIG_LV_LABEL_LONG_TXT_HINT is not set
# CONFIG_LV_LABEL_TEXT_SELECTION is not set
CONFIG_LV_MEMCPY_MEMSET_STD=y
CONFIG_LV_MEM_CUSTOM=y
CONFIG_LV_MEM_CUSTOM_INCLUDE="stdlib.h"
# CONFIG_LV_USE_ANIMIMG is not set
# CONFIG_LV_USE_ARC is not set
# CONFIG_LV_USE_BAR is not set
# CONFIG_LV_USE_BTNMATRIX is not set
# CONFIG_LV_USE_CANVAS is not set
# CONFIG_LV_USE_CHECKBOX is not set
# CONFIG_LV_USE_DROPDOWN is not set
# CONFIG_LV_USE_LINE is not set
# CONFIG_LV_USE_ROLLER is not set
# CONFIG_LV_USE_SLIDER is not set
# CONFIG_LV_USE_SWITCH is not set
# CONFIG_LV_USE_TEXTAREA is not set
# CONFIG_LV_USE_TABLE is not set
# CONFIG_LV_USE_ANIMIMG is not set
# CONFIG_LV_USE_CALENDAR is not set
# CONFIG_LV_USE_CANVAS is not set
# CONFIG_LV_USE_CHART is not set
# CONFIG_LV_USE_CHECKBOX is not set
# CONFIG_LV_USE_COLORWHEEL is not set
# CONFIG_LV_USE_DROPDOWN is not set
# CONFIG_LV_USE_FLEX is not set
CONFIG_LV_USE_FONT_SUBPX=y
CONFIG_LV_USE_FS_POSIX=y
# CONFIG_LV_USE_GRID is not set
# CONFIG_LV_USE_IMGBTN is not set
# CONFIG_LV_USE_KEYBOARD is not set
# CONFIG_LV_USE_LED is not set
# CONFIG_LV_USE_LINE is not set
# CONFIG_LV_USE_LIST is not set
# CONFIG_LV_USE_MENU is not set
# CONFIG_LV_USE_METER is not set
# CONFIG_LV_USE_MSGBOX is not set
# CONFIG_LV_USE_ROLLER is not set
# CONFIG_LV_USE_SLIDER is not set
# CONFIG_LV_USE_SNAPSHOT is not set
# CONFIG_LV_USE_SPAN is not set
# CONFIG_LV_USE_SPINBOX is not set
# CONFIG_LV_USE_SPINNER is not set
# CONFIG_LV_USE_SWITCH is not set
# CONFIG_LV_USE_TABLE is not set
# CONFIG_LV_USE_TABVIEW is not set
# CONFIG_LV_USE_TILEVIEW is not set
# CONFIG_LV_USE_WIN is not set
# CONFIG_LV_USE_TEXTAREA is not set
# CONFIG_LV_USE_THEME_BASIC is not set
# CONFIG_LV_USE_THEME_MONO is not set
# CONFIG_LV_USE_FLEX is not set
# CONFIG_LV_USE_GRID is not set
# CONFIG_LV_USE_SNAPSHOT is not set
# CONFIG_LV_LABEL_TEXT_SELECTION is not set
# CONFIG_LV_LABEL_LONG_TXT_HINT is not set
CONFIG_LV_USE_FS_POSIX=y
CONFIG_LV_USE_FONT_SUBPX=y
# CONFIG_LV_USE_TILEVIEW is not set
# CONFIG_LV_USE_WIN is not set
# CONFIG_LWIP_DHCPS is not set
CONFIG_LWIP_DHCP_GET_NTP_SRV=y
CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1
CONFIG_LWIP_LOCAL_HOSTNAME="willow"
CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0=y
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=23040
CONFIG_LWIP_TCP_WND_DEFAULT=23040
CONFIG_LWIP_TCP_RECVMBOX_SIZE=18
CONFIG_LWIP_TCP_SACK_OUT=y
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=23040
CONFIG_LWIP_TCP_WND_DEFAULT=23040
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=1000
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y
CONFIG_MBEDTLS_HARDWARE_AES=y
Expand All @@ -110,6 +112,7 @@ CONFIG_PARTITION_TABLE_FILENAME="partitions_willow.csv"
CONFIG_PTHREAD_DEFAULT_CORE_0=y
CONFIG_RMT_SUPPRESS_DEPRECATE_WARN=y
CONFIG_SPIFFS_MAX_PARTITIONS=6
CONFIG_SPIRAM=y
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
Expand Down
Loading