128 wifi_event_sta_connected_t* event = (wifi_event_sta_connected_t*) event_data; |
128 wifi_event_sta_connected_t* event = (wifi_event_sta_connected_t*) event_data; |
129 wifi_ap_record_t ap_info; |
129 wifi_ap_record_t ap_info; |
130 esp_wifi_sta_get_ap_info(&ap_info); |
130 esp_wifi_sta_get_ap_info(&ap_info); |
131 ESP_LOGI(TAG, "Event STA connected, ssid:%s, bssid:" MACSTR ", channel:%d, rssi: %d, authmode:%s", |
131 ESP_LOGI(TAG, "Event STA connected, ssid:%s, bssid:" MACSTR ", channel:%d, rssi: %d, authmode:%s", |
132 ap_info.ssid, MAC2STR(ap_info.bssid), event->channel, ap_info.rssi, apsec[event->authmode]); |
132 ap_info.ssid, MAC2STR(ap_info.bssid), event->channel, ap_info.rssi, apsec[event->authmode]); |
133 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { |
133 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) { |
134 wifi_state->STA_connected = true; |
134 wifi_state->STA_connected = true; |
135 wifi_state->STA_rssi = ap_info.rssi; |
135 wifi_state->STA_rssi = ap_info.rssi; |
136 sprintf(wifi_state->STA_ssid, "%s", ap_info.ssid); |
136 sprintf(wifi_state->STA_ssid, "%s", ap_info.ssid); |
137 xSemaphoreGive(xSemaphoreWiFi); |
137 xSemaphoreGive(xSemaphoreWiFi); |
138 } else { |
138 } else { |
147 { |
147 { |
148 wifi_event_sta_disconnected_t* disconnected = (wifi_event_sta_disconnected_t*) event_data; |
148 wifi_event_sta_disconnected_t* disconnected = (wifi_event_sta_disconnected_t*) event_data; |
149 |
149 |
150 ESP_LOGI(TAG, "Event STA disconnected, ssid:%s, ssid_len:%d, bssid:" MACSTR ", reason:%d", |
150 ESP_LOGI(TAG, "Event STA disconnected, ssid:%s, ssid_len:%d, bssid:" MACSTR ", reason:%d", |
151 disconnected->ssid, disconnected->ssid_len, MAC2STR(disconnected->bssid), disconnected->reason); |
151 disconnected->ssid, disconnected->ssid_len, MAC2STR(disconnected->bssid), disconnected->reason); |
152 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { |
152 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) { |
153 wifi_state->STA_connected = false; |
153 wifi_state->STA_connected = false; |
154 wifi_state->STA_online = false; |
154 wifi_state->STA_online = false; |
155 wifi_state->STA_rssi = 0; |
155 wifi_state->STA_rssi = 0; |
156 xSemaphoreGive(xSemaphoreWiFi); |
156 xSemaphoreGive(xSemaphoreWiFi); |
157 } else { |
157 } else { |
175 switch (event_id) { |
175 switch (event_id) { |
176 |
176 |
177 case IP_EVENT_STA_GOT_IP: |
177 case IP_EVENT_STA_GOT_IP: |
178 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
178 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
179 ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; |
179 ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; |
180 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) { |
180 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { |
181 wifi_state->STA_online = true; |
181 wifi_state->STA_online = true; |
182 snprintf(wifi_state->STA_ip, 16, "%s", ip4addr_ntoa(&event->ip_info.ip)); |
182 snprintf(wifi_state->STA_ip, 16, "%s", ip4addr_ntoa(&event->ip_info.ip)); |
183 snprintf(wifi_state->STA_nm, 16, "%s", ip4addr_ntoa(&event->ip_info.netmask)); |
183 snprintf(wifi_state->STA_nm, 16, "%s", ip4addr_ntoa(&event->ip_info.netmask)); |
184 snprintf(wifi_state->STA_gw, 16, "%s", ip4addr_ntoa(&event->ip_info.gw)); |
184 snprintf(wifi_state->STA_gw, 16, "%s", ip4addr_ntoa(&event->ip_info.gw)); |
185 xSemaphoreGive(xSemaphoreWiFi); |
185 xSemaphoreGive(xSemaphoreWiFi); |
189 break; |
189 break; |
190 |
190 |
191 case IP_EVENT_STA_LOST_IP: |
191 case IP_EVENT_STA_LOST_IP: |
192 ESP_LOGW(TAG, "Lost IP address"); |
192 ESP_LOGW(TAG, "Lost IP address"); |
193 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
193 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
194 if (xSemaphoreTake(xSemaphoreWiFi, 10) == pdTRUE) { |
194 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { |
195 wifi_state->STA_ip[0] = '\0'; |
195 wifi_state->STA_ip[0] = '\0'; |
196 wifi_state->STA_nm[0] = '\0'; |
196 wifi_state->STA_nm[0] = '\0'; |
197 wifi_state->STA_gw[0] = '\0'; |
197 wifi_state->STA_gw[0] = '\0'; |
198 wifi_state->STA_online = false; |
198 wifi_state->STA_online = false; |
199 xSemaphoreGive(xSemaphoreWiFi); |
199 xSemaphoreGive(xSemaphoreWiFi); |