esp32-warm-water
esp32 based project for the control of a heating element based on temperature
wifi_sap.c
Go to the documentation of this file.
1 /*
2  * MIT License
3  *
4  * Copyright (c) 2021 wolffshots
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  *
24  * A note on the copyright line: https://www.copyright.gov/title17/92chap4.html#408
25  */
26 
32 #include "wifi_sap.h"
33 
34 static const char *TAG = CONFIG_WIFI_STA_LOG_TAG;
35 
36 #if defined(CONFIG_ESP_WIFI_SSID_SOFTAP) && defined(CONFIG_ESP_WIFI_PASSWORD_SOFTAP) && defined(CONFIG_ESP_WIFI_CHANNEL_SOFTAP) && defined(CONFIG_ESP_MAX_STA_CONN_SOFTAP)
37 static void wifi_event_handler(void *arg, esp_event_base_t event_base,
38  int32_t event_id, void *event_data)
39 {
40  if (event_id == WIFI_EVENT_AP_STACONNECTED)
41  {
42  wifi_event_ap_staconnected_t *event = (wifi_event_ap_staconnected_t *)event_data;
43  ESP_LOGI(TAG, "station " MACSTR " join, AID=%d",
44  MAC2STR(event->mac), event->aid);
45  }
46  else if (event_id == WIFI_EVENT_AP_STADISCONNECTED)
47  {
48  wifi_event_ap_stadisconnected_t *event = (wifi_event_ap_stadisconnected_t *)event_data;
49  ESP_LOGI(TAG, "station " MACSTR " leave, AID=%d",
50  MAC2STR(event->mac), event->aid);
51  }
52 }
53 #endif
54 void wifi_init_softap(void)
55 {
56 #if defined(CONFIG_ESP_WIFI_SSID_SOFTAP) && defined(CONFIG_ESP_WIFI_PASSWORD_SOFTAP) && defined(CONFIG_ESP_WIFI_CHANNEL_SOFTAP) && defined(CONFIG_ESP_MAX_STA_CONN_SOFTAP)
57  ESP_ERROR_CHECK(esp_netif_init());
58  ESP_ERROR_CHECK(esp_event_loop_create_default());
59  esp_netif_create_default_wifi_ap();
60  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
61  ESP_ERROR_CHECK(esp_wifi_init(&cfg));
62  ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
63  ESP_EVENT_ANY_ID,
64  &wifi_event_handler,
65  NULL,
66  NULL));
67  wifi_config_t wifi_config = {
68  .ap = {
69  .ssid = CONFIG_ESP_WIFI_SSID_SOFTAP,
70  .ssid_len = strlen(CONFIG_ESP_WIFI_SSID_SOFTAP),
71  .channel = CONFIG_ESP_WIFI_CHANNEL_SOFTAP,
72  .password = CONFIG_ESP_WIFI_PASSWORD_SOFTAP,
73  .max_connection = CONFIG_ESP_MAX_STA_CONN_SOFTAP,
74  .authmode = WIFI_AUTH_WPA_WPA2_PSK},
75  };
76  if (strlen(CONFIG_ESP_WIFI_PASSWORD_SOFTAP) == 0)
77  {
78  wifi_config.ap.authmode = WIFI_AUTH_OPEN;
79  }
80  ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
81  ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));
82  ESP_ERROR_CHECK(esp_wifi_start());
83 
84  ESP_LOGI(TAG, "wifi_init_softap finished. SSID: %s, password: %s channel: %d",
85  CONFIG_ESP_WIFI_SSID_SOFTAP, CONFIG_ESP_WIFI_PASSWORD_SOFTAP, CONFIG_ESP_WIFI_CHANNEL_SOFTAP);
86  sprintf(ip_address, IPSTR, 0, 0, 0, 0);
87 #endif
88 }
89 
90 void wifi_init_sap(void)
91 {
92  ESP_LOGI(TAG, "wifi softap!");
93  //Initialize NVS
94  esp_err_t ret = nvs_flash_init();
95  if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
96  {
97  ESP_ERROR_CHECK(nvs_flash_erase());
98  ret = nvs_flash_init();
99  }
100  ESP_ERROR_CHECK(ret);
102 }
void wifi_init_softap(void)
Definition: wifi_sap.c:54
void wifi_init_sap(void)
Definition: wifi_sap.c:90
defininitions for wrapper component to set up wifi in softap mode
char ip_address[16]
Definition: main.c:54
const char * TAG
Definition: wifi_sta.c:42