main/task_wifi.c

changeset 34
5c92103c5e72
parent 22
90f22a101fc6
child 49
4ec04c6f1551
equal deleted inserted replaced
33:dd52aecfc19d 34:5c92103c5e72
140 esp_wifi_connect(); 140 esp_wifi_connect();
141 break; 141 break;
142 142
143 // SYSTEM_EVENT_STA_STOP 3 143 // SYSTEM_EVENT_STA_STOP 3
144 case SYSTEM_EVENT_STA_CONNECTED: 144 case SYSTEM_EVENT_STA_CONNECTED:
145 ESP_LOGI(TAG, "Event STA connected, turn off AP"); 145 ESP_LOGI(TAG, "Event STA connected");
146 wifi_ap_record_t ap_info; 146 wifi_ap_record_t ap_info;
147 esp_wifi_sta_get_ap_info(&ap_info); 147 esp_wifi_sta_get_ap_info(&ap_info);
148 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { 148 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) {
149 wifi_state->STA_connected = true; 149 wifi_state->STA_connected = true;
150 wifi_state->STA_rssi = ap_info.rssi; 150 wifi_state->STA_rssi = ap_info.rssi;
151 sprintf(wifi_state->STA_ssid, "%s", ap_info.ssid); 151 sprintf(wifi_state->STA_ssid, "%s", ap_info.ssid);
152 xSemaphoreGive(xSemaphoreWiFi); 152 xSemaphoreGive(xSemaphoreWiFi);
153 } 153 }
154 // Turn off AP
155 ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
156 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); 154 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED);
157 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); 155 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED);
158 break; 156 break;
159 157
160 case SYSTEM_EVENT_STA_DISCONNECTED: 158 case SYSTEM_EVENT_STA_DISCONNECTED:
161 ESP_LOGI(TAG, "Event STA disconnected, turn on AP"); 159 ESP_LOGI(TAG, "Event STA disconnected");
162 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) { 160 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) {
163 wifi_state->STA_connected = false; 161 wifi_state->STA_connected = false;
164 wifi_state->STA_online = false; 162 wifi_state->STA_online = false;
165 wifi_state->STA_rssi = 0; 163 wifi_state->STA_rssi = 0;
166 xSemaphoreGive(xSemaphoreWiFi); 164 xSemaphoreGive(xSemaphoreWiFi);
167 } 165 }
168 // Turn on AP
169 ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_APSTA));
170 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); 166 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED);
171 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); 167 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED);
172 168
173 /* 169 /*
174 * Meanwhile, try to reconnect. 170 * Meanwhile, try to reconnect.
178 } 174 }
179 break; 175 break;
180 176
181 // SYSTEM_EVENT_STA_AUTHMODE_CHANGE 6 177 // SYSTEM_EVENT_STA_AUTHMODE_CHANGE 6
182 case SYSTEM_EVENT_STA_GOT_IP: 178 case SYSTEM_EVENT_STA_GOT_IP:
183 // printf("SYSTEM_EVENT_STA_GOT_IP\n");
184 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_HAS_IP); 179 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_HAS_IP);
185 tcpip_adapter_ip_info_t ip; 180 tcpip_adapter_ip_info_t ip;
186 memset(&ip, 0, sizeof(tcpip_adapter_ip_info_t)); 181 memset(&ip, 0, sizeof(tcpip_adapter_ip_info_t));
187 if (tcpip_adapter_get_ip_info(ESP_IF_WIFI_STA, &ip) == 0) { 182 if (tcpip_adapter_get_ip_info(ESP_IF_WIFI_STA, &ip) == 0) {
188 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) { 183 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) {
270 265
271 void task_wifi( void * pvParameters ) 266 void task_wifi( void * pvParameters )
272 { 267 {
273 esp_err_t ret; 268 esp_err_t ret;
274 269
275 ESP_LOGI(TAG, "Starting WiFi driver"); 270 ESP_LOGI(TAG, "Starting WiFi");
276 271
277 /* 272 /*
278 * Initialize NVS 273 * Initialize NVS
279 */ 274 */
280 ret = nvs_flash_init(); 275 ret = nvs_flash_init();

mercurial