main/dcf77tx.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 dcf77tx.c
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 * @brief DCF77 emulator/transmitter
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 #include "dcf77tx.h"
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 static const char *TAG = "dcf77tx";
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 static TaskHandle_t xTaskWifi = NULL;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 char hostname[32];
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 int Main_Loop = ML_INIT;
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 extern SemaphoreHandle_t xSemaphoreWiFi;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 extern WIFI_State *wifi_state; ///< WiFi state
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16 extern bool _wifi_ScanDone;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 extern int8_t _wifi_RSSI;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18
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 void app_main(void)
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 esp_err_t ret;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 ESP_LOGI(TAG, "Starting DCF77tx");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 * Initialize NVS
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 ret = nvs_flash_init();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30 if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 ESP_ERROR_CHECK(nvs_flash_erase());
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 ret = nvs_flash_init();
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 ESP_ERROR_CHECK(ret);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36 uint8_t mac_addr[8] = {0};
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 // 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
38 esp_efuse_mac_get_default(mac_addr);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 sprintf(hostname, "dcf77tx-%02x%02x%02x", mac_addr[3], mac_addr[4], mac_addr[5]);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 esp_log_level_set("wifi", ESP_LOG_ERROR);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi);
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 int wait = 150;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 while (wait) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 vTaskDelay(100 / portTICK_PERIOD_MS);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 if (ready_WiFi()) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 ESP_LOGI(TAG, "Online in %.1f seconds", (150 - wait) / 10.0);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 wait = 0;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 wait--;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 if (wait < 1)
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 ESP_LOGE(TAG, "Timeout network connection");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 }
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 time_t now;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 struct tm timeinfo;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 char strftime_buf[64];
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 time(&now);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 // Set timezone to Central Europe Time and print local time
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63 setenv("TZ", "CET-01CEST-02,M3.4.0,M10.4.0", 1);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 tzset();
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 localtime_r(&now, &timeinfo);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 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
67 ESP_LOGI(TAG, "The current date/time in Amsterdam is: %s", strftime_buf);
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 /*
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 * Main application loop
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71 */
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 while (1) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 switch (Main_Loop) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 case ML_INIT: if (ready_WiFi() ) {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 Main_Loop = ML_SYNC;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 ESP_LOGI(TAG, "ML_INIT -> ML_SYNC");
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 } else {
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 Main_Loop = ML_CONNECT;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 ESP_LOGI(TAG, "ML_INIT -> ML_CONNECT");
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 break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82 case ML_CONNECT: break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
83 case ML_SYNC: break;
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
84 case ML_RUN: break;
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 vTaskDelay(10 / portTICK_PERIOD_MS);
913eb9ca40b1 Initial checkin, WiFi connects and SNTP timesync works.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
88 }
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

mercurial