main/task_wifi.c

Thu, 19 Oct 2023 17:32:16 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 19 Oct 2023 17:32:16 +0200
changeset 0
913eb9ca40b1
child 1
86b275481021
permissions
-rw-r--r--

Initial checkin, WiFi connects and SNTP timesync works.

0
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /**
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 * @file task_wifi.c
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 * @brief WiFi task. Connect to the known AP with the strongest signal.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 #include "dcf77tx.h"
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 #define MAX_AP_NUM 10
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 static const char *TAG = "task_wifi";
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 SemaphoreHandle_t xSemaphoreWiFi = NULL; ///< Semaphore WiFi task.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 EventGroupHandle_t xEventGroupWifi; ///< Events WiFi task.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 uint16_t ap_num = MAX_AP_NUM; ///< Scan counter.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 wifi_ap_record_t *accessp_records; ///< [MAX_AP_NUM] records array with scan results.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18 wifi_config_t *task_wifi_ConfigSTA = NULL; ///< Current STA configuration.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 WIFI_State *wifi_state = NULL; ///< Public state for other tasks.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 esp_netif_t *sta_netif = NULL; ///< Station interface
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23 wifi_scan_config_t scan_config = { ///< WiFi scanner configuration.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 .ssid = (uint8_t *)CONFIG_ESP_WIFI_SSID,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 .bssid = 0,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 .channel = 0,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 .show_hidden = false
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 };
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 bool _wifi_ScanDone = false; ///< Scan ready
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 bool _wifi_BetterAP = false; ///< If better AP available.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 int8_t _wifi_RSSI = -127; ///< Latest RSSI level.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 uint16_t _wifi_Scanned = 0; ///< Total scanned APs.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 extern char hostname[]; ///< Generated hostname
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 const int TASK_WIFI_REQUEST_STA_DISCONNECT = BIT0; ///< When set, means a client requested to disconnect from currently connected AP.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 const int TASK_WIFI_REQUEST_STA_CONNECT = BIT1; ///< When set, means a client requested to connect to an access point.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 const int TASK_WIFI_REQUEST_STA_SCAN = BIT2; ///< When set, means a client requested a AP scan.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 const int TASK_WIFI_REQUEST_STA_STATUS = BIT3; ///< When set, means a client requested to update the connection status.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 const int TASK_WIFI_HAS_IP = BIT4; ///< Indicate that we have an IP address
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 const int TASK_WIFI_STA_FAILED = BIT5; ///< Indicate that we could not get a connection to AP as station.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 const int TASK_WIFI_STA_DISCONNECTED = BIT6; ///< Indicate that we are disconnected from an ap station.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 const int TASK_WIFI_STA_CONNECTED = BIT7; ///< Indicate that we are connected to AP as station, flip of BIT5.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 /**
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 * @brief Array with AP security names
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 const char *apsec[] = { "Open", "WEP", "WPA", "WPA2", "WPA WPA2", "Enterprise" };
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 /****************************************************************************/
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 bool ready_WiFi(void)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 if (wifi_state->STA_connected && wifi_state->STA_online)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 return true;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 return false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 void status_WiFi(void)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_STATUS);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 void request_WiFi(void)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 void scan_WiFi(void)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_SCAN);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
85 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
86
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
87
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88 void disconnect_WiFi(void)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
89 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
90 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_DISCONNECT);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
91 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
92 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
93
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
94
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
95 static void print_servers(void)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
96 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
97 ESP_LOGI(TAG, "List of configured NTP servers:");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
98
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
99 for (uint8_t i = 0; i < SNTP_MAX_SERVERS; ++i){
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
100 if (esp_sntp_getservername(i)){
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
101 ESP_LOGI(TAG, "server %d: %s", i, esp_sntp_getservername(i));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
102 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
103 // we have either IPv4 or IPv6 address, let's print it
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
104 char buff[64];
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
105 ip_addr_t const *ip = esp_sntp_getserver(i);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
106 if (ipaddr_ntoa_r(ip, buff, 64) != NULL)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
107 ESP_LOGI(TAG, "server %d: %s", i, buff);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
108 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
109 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
110 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
111
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
112
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
113 static void wifi_event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
114 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
115 switch (event_id) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
116
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
117 case WIFI_EVENT_SCAN_DONE:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
118 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
119 /* Get the results so the memory used is freed. */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
120 ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&ap_num, accessp_records));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
121 ESP_LOGI(TAG, "Event wifi Scane done, %d records", ap_num);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
122 _wifi_BetterAP = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
123 for (int i = 0; i < ap_num; i++) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
124 wifi_ap_record_t ap = accessp_records[i];
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
125 ESP_LOGI(TAG, "AP:%d bssid:%02x:%02x:%02x:%02x:%02x:%02x ssid:%s ch:%d rssi:%d",
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
126 i, ap.bssid[0], ap.bssid[1], ap.bssid[2], ap.bssid[3], ap.bssid[4], ap.bssid[5],
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
127 ap.ssid, ap.primary, ap.rssi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
128 if (ap.rssi > CONFIG_ESP_WIFI_ROAMING_LEVEL && ap.rssi > (_wifi_RSSI + 3)) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
129 _wifi_BetterAP = true;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
130 ESP_LOGI(TAG, "AP:%d is a better AP", i);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
131 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
132 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
133 _wifi_Scanned = ap_num;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
134 _wifi_ScanDone = true;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
135 if (_wifi_BetterAP) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
136 ESP_LOGI(TAG, "Disconnect current AP");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
137 disconnect_WiFi();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
138 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
139 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
140 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
141
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
142 case WIFI_EVENT_STA_START:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
143 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
144 ESP_LOGI(TAG, "Event wifi START");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
145 // Set the configured hostname for the dhcp client.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
146 ESP_ERROR_CHECK(esp_netif_set_hostname(sta_netif, hostname));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
147 esp_wifi_connect();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
148 _wifi_BetterAP = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
149 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
150 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
151
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
152 case WIFI_EVENT_STA_CONNECTED:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
153 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
154 wifi_event_sta_connected_t* event = (wifi_event_sta_connected_t*) event_data;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
155 wifi_ap_record_t ap_info;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
156 esp_wifi_sta_get_ap_info(&ap_info);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
157 ESP_LOGI(TAG, "Event STA connected, ssid:%s, bssid:" MACSTR ", channel:%d, rssi: %d, authmode:%s",
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
158 ap_info.ssid, MAC2STR(ap_info.bssid), event->channel, ap_info.rssi, apsec[event->authmode]);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
159 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
160 wifi_state->STA_connected = true;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
161 wifi_state->STA_rssi = ap_info.rssi;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
162 wifi_state->STA_channel = ap_info.primary;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
163 sprintf(wifi_state->STA_ssid, "%s", ap_info.ssid);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
164 snprintf(wifi_state->STA_bssid, 18, "%02x:%02x:%02x:%02x:%02x:%02x",
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
165 ap_info.bssid[0], ap_info.bssid[1], ap_info.bssid[2], ap_info.bssid[3], ap_info.bssid[4], ap_info.bssid[5]);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
166 xSemaphoreGive(xSemaphoreWiFi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
167 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
168 ESP_LOGE(TAG, "wifi_event_handler() lock error WIFI_EVENT_STA_CONNECTED");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
169 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
170 print_servers();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
171 _wifi_BetterAP = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
172 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
173 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
174 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
175 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
176
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
177 case WIFI_EVENT_STA_DISCONNECTED:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
178 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
179 wifi_event_sta_disconnected_t* disconnected = (wifi_event_sta_disconnected_t*) event_data;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
180
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
181 ESP_LOGI(TAG, "Event STA disconnected, ssid:%s, ssid_len:%d, bssid:" MACSTR ", reason:%d",
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
182 disconnected->ssid, disconnected->ssid_len, MAC2STR(disconnected->bssid), disconnected->reason);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
183 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
184 wifi_state->STA_connected = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
185 wifi_state->STA_online = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
186 wifi_state->STA_rssi = 0;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
187 xSemaphoreGive(xSemaphoreWiFi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
188 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
189 ESP_LOGE(TAG, "wifi_event_handler() lock error WIFI_EVENT_STA_DISCONNECTED");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
190 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
191 _wifi_BetterAP = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
192 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
193 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
194 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
195 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
196
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
197 default:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
198 ESP_LOGW(TAG, "Unknown WiFi event %ld", event_id);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
199 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
200 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
201 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
202
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
203
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
204
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
205 static void got_ip_event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
206 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
207 switch (event_id) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
208
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
209 case IP_EVENT_STA_GOT_IP:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
210 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_HAS_IP);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
211 ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
212 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
213 wifi_state->STA_online = true;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
214 snprintf(wifi_state->STA_ip, 16, IPSTR, IP2STR(&event->ip_info.ip));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
215 snprintf(wifi_state->STA_nm, 16, IPSTR, IP2STR(&event->ip_info.netmask));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
216 snprintf(wifi_state->STA_gw, 16, IPSTR, IP2STR(&event->ip_info.gw));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
217 xSemaphoreGive(xSemaphoreWiFi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
218 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
219 ESP_LOGE(TAG, "got_ip_event_handler() lock error IP_EVENT_STA_GOT_IP");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
220 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
221
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
222 // ESP_LOGI(TAG, "Starting SNTP");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
223 // esp_netif_sntp_start();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
224
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
225 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
226
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
227 case IP_EVENT_STA_LOST_IP:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
228 ESP_LOGW(TAG, "Lost IP address");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
229 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_HAS_IP);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
230 if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
231 wifi_state->STA_ip[0] = '\0';
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
232 wifi_state->STA_nm[0] = '\0';
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
233 wifi_state->STA_gw[0] = '\0';
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
234 wifi_state->STA_online = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
235 xSemaphoreGive(xSemaphoreWiFi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
236 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
237 ESP_LOGE(TAG, "got_ip_event_handler() lock error IP_EVENT_STA_LOST_IP");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
238 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
239 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
240
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
241 case IP_EVENT_AP_STAIPASSIGNED:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
242 ESP_LOGI(TAG, "IP_EVENT_AP_STAIPASSIGNED");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
243 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
244
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
245 default:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
246 ESP_LOGW(TAG, "Unknown IP event %ld", event_id);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
247 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
248 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
249 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
250
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
251
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
252 void time_sync_notification_cb(struct timeval *tv)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
253 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
254 time_t now;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
255 char strftime_buf[64];
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
256 struct tm timeinfo;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
257
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
258 ESP_LOGI(TAG, "Notification of a time synchronization event");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
259 int rc = sntp_get_sync_status();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
260
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
261 if (rc == SNTP_SYNC_STATUS_COMPLETED) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
262 time(&now);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
263 localtime_r(&now, &timeinfo);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
264 // System_TimeOk = true;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
265 strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
266 ESP_LOGI(TAG, "NTP time is set: %s", strftime_buf);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
267 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
268 ESP_LOGI(TAG, "NTP unknown time sync event rc=%d", rc);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
269 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
270 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
271
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
272
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
273 void task_wifi( void * pvParameters )
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
274 {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
275 ESP_LOGI(TAG, "Starting WiFi");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
276
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
277 /* event handler and event group for the wifi driver */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
278 xEventGroupWifi = xEventGroupCreate();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
279 /* initialize the tcp stack */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
280 ESP_ERROR_CHECK(esp_netif_init());
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
281 ESP_ERROR_CHECK(esp_event_loop_create_default());
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
282
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
283 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
284 ESP_ERROR_CHECK(esp_wifi_init(&cfg));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
285
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
286 sta_netif = esp_netif_create_default_wifi_sta();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
287 assert(sta_netif);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
288
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
289 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
290 * Setup SNTP configuration
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
291 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
292 /**
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
293 * NTP server address could be acquired via DHCP,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
294 * see following menuconfig options:
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
295 * 'LWIP_DHCP_GET_NTP_SRV' - enable STNP over DHCP
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
296 * 'LWIP_SNTP_DEBUG' - enable debugging messages
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
297 *
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
298 * NOTE: This call should be made BEFORE esp acquires IP address from DHCP,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
299 * otherwise NTP option would be rejected by default.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
300 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
301 ESP_LOGI(TAG, "Initializing SNTP");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
302 esp_sntp_config_t config = ESP_NETIF_SNTP_DEFAULT_CONFIG("pool.ntp.org");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
303 config.start = false; // start SNTP service explicitly (after connecting)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
304 config.server_from_dhcp = true; // accept NTP offers from DHCP server, if any (need to enable *before* connecting)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
305 config.renew_servers_after_new_IP = true; // let esp-netif update configured SNTP server(s) after receiving DHCP lease
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
306 config.index_of_first_server = 1; // updates from server num 1, leaving server 0 (from DHCP) intact
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
307 config.ip_event_to_renew = IP_EVENT_STA_GOT_IP;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
308 config.sync_cb = time_sync_notification_cb; // only if we need the notification function
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
309 esp_netif_sntp_init(&config);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
310 ESP_LOGI(TAG, "Starting SNTP");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
311 esp_netif_sntp_start();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
312
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
313
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
314 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
315 * memory allocation of objects used by the task
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
316 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
317 accessp_records = (wifi_ap_record_t*)malloc(sizeof(wifi_ap_record_t) * MAX_AP_NUM);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
318 xSemaphoreWiFi = xSemaphoreCreateMutex();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
319 wifi_state = malloc(sizeof(WIFI_State));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
320 memset(wifi_state, 0x00, sizeof(WIFI_State));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
321
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
322 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
323 * init wifi as station
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
324 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
325 esp_event_handler_instance_t instance_any_id;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
326 esp_event_handler_instance_t instance_got_ip;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
327 ESP_ERROR_CHECK( esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL, &instance_any_id) );
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
328 ESP_ERROR_CHECK( esp_event_handler_instance_register(IP_EVENT, ESP_EVENT_ANY_ID, &got_ip_event_handler, NULL, &instance_got_ip) );
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
329
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
330 wifi_config_t wifi_config = {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
331 .sta = {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
332 .ssid = CONFIG_ESP_WIFI_SSID,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
333 .password = CONFIG_ESP_WIFI_PASSWORD,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
334 #if CONFIG_WIFI_ALL_CHANNEL_SCAN
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
335 .scan_method = WIFI_ALL_CHANNEL_SCAN,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
336 #elif CONFIG_WIFI_FAST_SCAN
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
337 .scan_method = WIFI_FAST_SCAN,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
338 #endif
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
339 .failure_retry_cnt = 3,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
340 .sort_method = WIFI_CONNECT_AP_BY_SIGNAL,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
341 .threshold.rssi = CONFIG_ESP_FAST_SCAN_MINIMUM_SIGNAL,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
342 .threshold.authmode = WIFI_AUTH_WPA2_PSK,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
343 },
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
344 };
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
345 ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
346 ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
347 ESP_ERROR_CHECK(esp_wifi_start());
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
348
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
349 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
350 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
351 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
352 EventBits_t uxBits;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
353
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
354 for(;;) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
355
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
356 /* actions that can trigger: request a connection, a scan, or a disconnection */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
357 uxBits = xEventGroupWaitBits(xEventGroupWifi,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
358 TASK_WIFI_REQUEST_STA_CONNECT | TASK_WIFI_REQUEST_STA_DISCONNECT | TASK_WIFI_REQUEST_STA_SCAN | TASK_WIFI_REQUEST_STA_STATUS,
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
359 pdFALSE, pdFALSE, portMAX_DELAY );
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
360
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
361 if (uxBits & TASK_WIFI_REQUEST_STA_DISCONNECT) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
362 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
363 * user requested a disconnect, this will in effect disconnect the wifi
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
364 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
365 ESP_LOGI(TAG, "Request STA disconnect");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
366 ESP_ERROR_CHECK(esp_wifi_disconnect());
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
367 xEventGroupWaitBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED, pdFALSE, pdTRUE, portMAX_DELAY );
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
368
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
369 /* finally: release the scan request bit */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
370 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_DISCONNECT);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
371 ESP_LOGI(TAG, "Request STA disconnect is done");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
372
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
373 } else if (uxBits & TASK_WIFI_REQUEST_STA_CONNECT) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
374
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
375 ESP_LOGI(TAG, "Request STA connect");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
376 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_FAILED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
377 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
378
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
379 ESP_LOGI(TAG, "Connecting to `%s'", CONFIG_ESP_WIFI_SSID);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
380 esp_err_t wifierror = esp_wifi_connect();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
381 if (wifierror != ESP_OK) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
382 ESP_LOGE(TAG, "esp_wifi_connect() `%s' rc=%04x", CONFIG_ESP_WIFI_SSID, (int)wifierror);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
383 xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_FAILED);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
384 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
385 uxBits = xEventGroupWaitBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED | TASK_WIFI_STA_FAILED, pdFALSE, pdFALSE, 5000 / portTICK_PERIOD_MS);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
386
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
387 } else if (uxBits & TASK_WIFI_REQUEST_STA_STATUS) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
388 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
389 * Request WiFi update status, refresh the rssi.
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
390 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
391 ESP_LOGD(TAG, "Request STA status");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
392 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_STATUS);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
393 wifi_ap_record_t ap_info;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
394 esp_wifi_sta_get_ap_info(&ap_info);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
395 ESP_LOGI(TAG, "Event STA status, ssid:%s, bssid:" MACSTR ", rssi: %d", ap_info.ssid, MAC2STR(ap_info.bssid), ap_info.rssi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
396 _wifi_RSSI = ap_info.rssi;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
397 _wifi_BetterAP = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
398 if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
399 wifi_state->STA_rssi = ap_info.rssi;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
400 wifi_state->STA_channel = ap_info.primary;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
401 snprintf(wifi_state->STA_bssid, 18, "%02x:%02x:%02x:%02x:%02x:%02x",
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
402 ap_info.bssid[0], ap_info.bssid[1], ap_info.bssid[2], ap_info.bssid[3], ap_info.bssid[4], ap_info.bssid[5]);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
403 xSemaphoreGive(xSemaphoreWiFi);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
404 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
405 ESP_LOGE(TAG, "lock error TASK_WIFI_REQUEST_STA_STATUS");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
406 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
407
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
408 } else if (uxBits & TASK_WIFI_REQUEST_STA_SCAN) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
409
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
410 ESP_LOGI(TAG, "Request STA scan");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
411 xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_SCAN);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
412 /* safe guard against overflow */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
413 ap_num = MAX_AP_NUM;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
414 _wifi_ScanDone = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
415 _wifi_BetterAP = false;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
416 ESP_ERROR_CHECK(esp_wifi_scan_start(&scan_config, false));
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
417 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
418
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
419 } /* for(;;) */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
420 }
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
421
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
422

mercurial