Merge branch 'main' into feature/error-handling

This commit is contained in:
2026-05-10 11:42:25 +02:00
6 changed files with 67 additions and 11 deletions
+40
View File
@@ -37,6 +37,7 @@ static bool s_initial_connect = true;
static void event_handler(void *arg, esp_event_base_t event_base,
int32_t event_id, void *event_data);
static bool parse_bssid(const char *bssid_str, uint8_t *bssid);
esp_err_t initWifi(void)
{
@@ -80,6 +81,21 @@ esp_err_t initWifi(void)
.threshold.authmode = WIFI_AUTH_WPA2_PSK,
},
};
#if CONFIG_ENV_WIFI_BSSID_LOCK
/* Lock to specific AP by BSSID */
if (parse_bssid(CONFIG_ENV_WIFI_BSSID, wifi_config.sta.bssid))
{
wifi_config.sta.bssid_set = true;
ESP_LOGI(TAG, "BSSID lock enabled: %s", CONFIG_ENV_WIFI_BSSID);
}
else
{
ESP_LOGE(TAG, "Invalid BSSID format: %s", CONFIG_ENV_WIFI_BSSID);
wifi_config.sta.bssid_set = false;
}
#endif
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
@@ -176,3 +192,27 @@ static void event_handler(void *arg, esp_event_base_t event_base,
}
}
}
/**
* @brief Parse BSSID string to byte array
*
* @param bssid_str BSSID string in format "XX:XX:XX:XX:XX:XX"
* @param bssid Output byte array (6 bytes)
* @return true on success, false on parse error
*/
static bool parse_bssid(const char *bssid_str, uint8_t *bssid)
{
unsigned int tmp[6];
int parsed = sscanf(bssid_str, "%x:%x:%x:%x:%x:%x",
&tmp[0], &tmp[1], &tmp[2],
&tmp[3], &tmp[4], &tmp[5]);
if (parsed != 6)
{
return false;
}
for (int i = 0; i < 6; i++)
{
bssid[i] = (uint8_t)tmp[i];
}
return true;
}