Fri, 20 Oct 2023 15:57:56 +0200
Added framework for the DCF77 transmitter. Added two debug LEDs.
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 | 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
|
17 | 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
|
18 | 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
|
19 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
20 | |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
21 | //wifi_scan_config_t scan_config = { ///< WiFi scanner configuration. |
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
22 | // .ssid = (uint8_t *)CONFIG_ESP_WIFI_SSID, |
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
23 | // .bssid = 0, |
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
24 | // .channel = 0, |
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
25 | // .show_hidden = false |
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
26 | //}; |
0
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
27 | |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
28 | bool System_TimeOk = false; ///< True if online and sntp sync. |
0
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
29 | 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
|
30 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
31 | extern char hostname[]; ///< Generated hostname |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
32 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
33 | |
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 | 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
|
36 | 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
|
37 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
38 | 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
|
39 | 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
|
40 | 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
|
41 | 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
|
42 | |
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 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
45 | /** |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
46 | * @brief Array with AP security names |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
47 | */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
48 | 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
|
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 | |
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 | bool ready_WiFi(void) |
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 | 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
|
57 | return true; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
58 | return false; |
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 | |
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 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
63 | void request_WiFi(void) |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
64 | { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
65 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT); |
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 disconnect_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_DISCONNECT); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
72 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT); |
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 | static void print_servers(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 | 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
|
79 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
80 | 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
|
81 | if (esp_sntp_getservername(i)){ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
82 | 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
|
83 | } else { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
84 | // 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
|
85 | char buff[64]; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
86 | 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
|
87 | 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
|
88 | 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
|
89 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
90 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
91 | } |
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 | 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
|
95 | { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
96 | switch (event_id) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
97 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
98 | case WIFI_EVENT_STA_START: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
99 | { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
100 | ESP_LOGI(TAG, "Event wifi START"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
101 | // 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
|
102 | 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
|
103 | esp_wifi_connect(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
104 | break; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
105 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
106 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
107 | case WIFI_EVENT_STA_CONNECTED: |
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 | 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
|
110 | wifi_ap_record_t ap_info; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
111 | 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
|
112 | 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
|
113 | 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
|
114 | if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
115 | wifi_state->STA_connected = true; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
116 | wifi_state->STA_rssi = ap_info.rssi; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
117 | wifi_state->STA_channel = ap_info.primary; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
118 | 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
|
119 | 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
|
120 | 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
|
121 | xSemaphoreGive(xSemaphoreWiFi); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
122 | } else { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
123 | 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
|
124 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
125 | print_servers(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
126 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
127 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
128 | break; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
129 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
130 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
131 | case WIFI_EVENT_STA_DISCONNECTED: |
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_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
|
134 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
135 | 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
|
136 | 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
|
137 | if (xSemaphoreTake(xSemaphoreWiFi, 35) == pdTRUE) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
138 | wifi_state->STA_connected = false; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
139 | wifi_state->STA_online = false; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
140 | wifi_state->STA_rssi = 0; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
141 | xSemaphoreGive(xSemaphoreWiFi); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
142 | } else { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
143 | 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
|
144 | } |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
145 | System_TimeOk = false; |
0
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
146 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
147 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
148 | break; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
149 | } |
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 | default: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
152 | 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
|
153 | break; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
154 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
155 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
156 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
157 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
158 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
159 | 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
|
160 | { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
161 | switch (event_id) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
162 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
163 | case IP_EVENT_STA_GOT_IP: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
164 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
165 | 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
|
166 | if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
167 | wifi_state->STA_online = true; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
168 | 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
|
169 | 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
|
170 | 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
|
171 | xSemaphoreGive(xSemaphoreWiFi); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
172 | } else { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
173 | 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
|
174 | } |
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 | // ESP_LOGI(TAG, "Starting SNTP"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
177 | // esp_netif_sntp_start(); |
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 | break; |
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 | case IP_EVENT_STA_LOST_IP: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
182 | ESP_LOGW(TAG, "Lost IP address"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
183 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_HAS_IP); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
184 | if (xSemaphoreTake(xSemaphoreWiFi, 25) == pdTRUE) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
185 | wifi_state->STA_ip[0] = '\0'; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
186 | wifi_state->STA_nm[0] = '\0'; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
187 | wifi_state->STA_gw[0] = '\0'; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
188 | wifi_state->STA_online = false; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
189 | xSemaphoreGive(xSemaphoreWiFi); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
190 | } else { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
191 | 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
|
192 | } |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
193 | System_TimeOk = false; |
0
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 | case IP_EVENT_AP_STAIPASSIGNED: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
197 | ESP_LOGI(TAG, "IP_EVENT_AP_STAIPASSIGNED"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
198 | break; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
199 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
200 | default: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
201 | 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
|
202 | break; |
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 | |
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 | 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
|
208 | { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
209 | time_t now; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
210 | char strftime_buf[64]; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
211 | struct tm timeinfo; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
212 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
213 | 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
|
214 | int rc = sntp_get_sync_status(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
215 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
216 | if (rc == SNTP_SYNC_STATUS_COMPLETED) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
217 | time(&now); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
218 | localtime_r(&now, &timeinfo); |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
219 | System_TimeOk = true; |
0
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
220 | 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
|
221 | 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
|
222 | } else { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
223 | ESP_LOGI(TAG, "NTP unknown time sync event rc=%d", rc); |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
224 | System_TimeOk = false; |
0
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
225 | } |
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 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
228 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
229 | void task_wifi( void * pvParameters ) |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
230 | { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
231 | ESP_LOGI(TAG, "Starting WiFi"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
232 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
233 | /* 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
|
234 | xEventGroupWifi = xEventGroupCreate(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
235 | /* initialize the tcp stack */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
236 | ESP_ERROR_CHECK(esp_netif_init()); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
237 | 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
|
238 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
239 | 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
|
240 | ESP_ERROR_CHECK(esp_wifi_init(&cfg)); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
241 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
242 | 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
|
243 | assert(sta_netif); |
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 | /* |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
246 | * Setup SNTP configuration |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
247 | */ |
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 | * 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
|
250 | * see following menuconfig options: |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
251 | * '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
|
252 | * 'LWIP_SNTP_DEBUG' - enable debugging messages |
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 | * 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
|
255 | * 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
|
256 | */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
257 | ESP_LOGI(TAG, "Initializing SNTP"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
258 | 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
|
259 | 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
|
260 | 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
|
261 | 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
|
262 | 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
|
263 | 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
|
264 | 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
|
265 | esp_netif_sntp_init(&config); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
266 | ESP_LOGI(TAG, "Starting SNTP"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
267 | esp_netif_sntp_start(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
268 | |
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 | * 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
|
272 | */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
273 | xSemaphoreWiFi = xSemaphoreCreateMutex(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
274 | wifi_state = malloc(sizeof(WIFI_State)); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
275 | memset(wifi_state, 0x00, sizeof(WIFI_State)); |
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 | /* |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
278 | * init wifi as station |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
279 | */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
280 | 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
|
281 | 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
|
282 | 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
|
283 | 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
|
284 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
285 | wifi_config_t wifi_config = { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
286 | .sta = { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
287 | .ssid = CONFIG_ESP_WIFI_SSID, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
288 | .password = CONFIG_ESP_WIFI_PASSWORD, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
289 | .scan_method = WIFI_FAST_SCAN, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
290 | .failure_retry_cnt = 3, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
291 | .sort_method = WIFI_CONNECT_AP_BY_SIGNAL, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
292 | .threshold.authmode = WIFI_AUTH_WPA2_PSK, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
293 | }, |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
294 | }; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
295 | 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
|
296 | 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
|
297 | ESP_ERROR_CHECK(esp_wifi_start()); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
298 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
299 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
300 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_CONNECTED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
301 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_DISCONNECTED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
302 | EventBits_t uxBits; |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
303 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
304 | for(;;) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
305 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
306 | /* actions that can trigger: request a connection, a scan, or a disconnection */ |
1
86b275481021
Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
0
diff
changeset
|
307 | uxBits = xEventGroupWaitBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT | TASK_WIFI_REQUEST_STA_DISCONNECT, pdFALSE, pdFALSE, portMAX_DELAY ); |
0
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
308 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
309 | if (uxBits & TASK_WIFI_REQUEST_STA_DISCONNECT) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
310 | /* |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
311 | * 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
|
312 | */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
313 | ESP_LOGI(TAG, "Request STA disconnect"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
314 | ESP_ERROR_CHECK(esp_wifi_disconnect()); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
315 | 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
|
316 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
317 | /* finally: release the scan request bit */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
318 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_DISCONNECT); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
319 | 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
|
320 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
321 | } 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
|
322 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
323 | ESP_LOGI(TAG, "Request STA connect"); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
324 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_STA_FAILED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
325 | xEventGroupClearBits(xEventGroupWifi, TASK_WIFI_REQUEST_STA_CONNECT); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
326 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
327 | 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
|
328 | esp_err_t wifierror = esp_wifi_connect(); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
329 | if (wifierror != ESP_OK) { |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
330 | 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
|
331 | xEventGroupSetBits(xEventGroupWifi, TASK_WIFI_STA_FAILED); |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
332 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
333 | 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
|
334 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
335 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
336 | } /* for(;;) */ |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
337 | } |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
338 | |
913eb9ca40b1
Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
339 |