29esp_err_t
wifi_start_ap(
const char *ssid,
const char *password, uint8_t channel,
30 uint8_t max_connections) {
35 if (!ssid || strlen(ssid) == 0 || strlen(ssid) > 32) {
36 return ESP_ERR_INVALID_ARG;
39 const bool has_password = password && strlen(password) > 0;
40 if (has_password && strlen(password) < 8) {
41 return ESP_ERR_INVALID_ARG;
44 esp_err_t err = nvs_flash_init();
45 if (err == ESP_ERR_NVS_NO_FREE_PAGES ||
46 err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
47 ESP_ERROR_CHECK(nvs_flash_erase());
48 err = nvs_flash_init();
54 ESP_ERROR_CHECK(esp_netif_init());
55 ESP_ERROR_CHECK(esp_event_loop_create_default());
56 esp_netif_create_default_wifi_ap();
58 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
59 ESP_ERROR_CHECK(esp_wifi_init(&cfg));
61 wifi_config_t wifi_config = {
65 .max_connection = max_connections,
66 .authmode = has_password ? WIFI_AUTH_WPA2_PSK : WIFI_AUTH_OPEN,
74 strlcpy((
char *)wifi_config.ap.ssid, ssid,
sizeof(wifi_config.ap.ssid));
75 wifi_config.ap.ssid_len = strlen(ssid);
78 strlcpy((
char *)wifi_config.ap.password, password,
79 sizeof(wifi_config.ap.password));
82 ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
83 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));
84 ESP_ERROR_CHECK(esp_wifi_start());
87 LOGI(
"WiFi AP started: SSID=%s channel=%u", ssid, channel);
esp_err_t wifi_start_ap(const char *ssid, const char *password, uint8_t channel, uint8_t max_connections)
Start WiFi Access Point (AP) mode.