main/dcf77tx.c

changeset 5
676c38f52d08
parent 3
849ca14d4a2f
equal deleted inserted replaced
4:426defedd402 5:676c38f52d08
8 8
9 static TaskHandle_t xTaskWifi = NULL; 9 static TaskHandle_t xTaskWifi = NULL;
10 static TaskHandle_t xTaskDCF = NULL; 10 static TaskHandle_t xTaskDCF = NULL;
11 char hostname[32]; 11 char hostname[32];
12 int Main_Loop = ML_INIT; 12 int Main_Loop = ML_INIT;
13 13 static led_strip_handle_t led_strip; ///< ESP32-C3 onboard LED
14 14
15 extern SemaphoreHandle_t xSemaphoreWiFi; 15 extern SemaphoreHandle_t xSemaphoreWiFi;
16 extern WIFI_State *wifi_state; ///< WiFi state 16 extern WIFI_State *wifi_state; ///< WiFi state
17 extern bool _wifi_ScanDone; 17 extern bool _wifi_ScanDone;
18 extern int8_t _wifi_RSSI; 18 extern int8_t _wifi_RSSI;
19 extern SemaphoreHandle_t xSemaphoreDCF; 19 extern SemaphoreHandle_t xSemaphoreDCF;
20 extern DCF_State *dcf_state; ///< DCF77 state 20 extern DCF_State *dcf_state; ///< DCF77 state
21 extern bool System_TimeOk; 21 extern bool System_TimeOk;
22
23
24 void set_ob_led(uint32_t red, uint32_t green, uint32_t blue)
25 {
26 if ((red + green + blue) > 0) {
27 led_strip_set_pixel(led_strip, 0, red, green, blue);
28 led_strip_refresh(led_strip);
29 } else {
30 led_strip_clear(led_strip);
31 }
32 }
22 33
23 34
24 void app_main(void) 35 void app_main(void)
25 { 36 {
26 esp_err_t ret; 37 esp_err_t ret;
47 58
48 esp_log_level_set("wifi", ESP_LOG_ERROR); 59 esp_log_level_set("wifi", ESP_LOG_ERROR);
49 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi); 60 xTaskCreate(&task_wifi, "task_wifi", 4096, NULL, 3, &xTaskWifi);
50 xTaskCreate(&task_DCF, "task_DCF", 4096, NULL, 4, &xTaskDCF); 61 xTaskCreate(&task_DCF, "task_DCF", 4096, NULL, 4, &xTaskDCF);
51 62
63 led_strip_config_t strip_config = {
64 .strip_gpio_num = 7,
65 .max_leds = 1, // at least one LED on board
66 };
67 led_strip_rmt_config_t rmt_config = {
68 .resolution_hz = 10 * 1000 * 1000, // 10MHz
69 };
70 ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip));
71 /* Set all LED off to clear all pixels */
72 led_strip_clear(led_strip);
73
52 int wait = 150; 74 int wait = 150;
53 while (wait) { 75 while (wait) {
54 vTaskDelay(100 / portTICK_PERIOD_MS); 76 vTaskDelay(100 / portTICK_PERIOD_MS);
55 if (ready_WiFi()) { 77 if (ready_WiFi()) {
56 ESP_LOGI(TAG, "Online in %.1f seconds", (150 - wait) / 10.0); 78 ESP_LOGI(TAG, "Online in %.1f seconds", (150 - wait) / 10.0);
76 while (1) { 98 while (1) {
77 switch (Main_Loop) { 99 switch (Main_Loop) {
78 case ML_INIT: if (ready_WiFi() ) { 100 case ML_INIT: if (ready_WiFi() ) {
79 Main_Loop = ML_SYNC; 101 Main_Loop = ML_SYNC;
80 ESP_LOGI(TAG, "ML_INIT -> ML_SYNC"); 102 ESP_LOGI(TAG, "ML_INIT -> ML_SYNC");
81 gpio_set_level(CONFIG_LED1_PIN, 1); 103 set_ob_led(5, 0, 0);
82 } else { 104 } else {
83 Main_Loop = ML_CONNECT; 105 Main_Loop = ML_CONNECT;
84 ESP_LOGI(TAG, "ML_INIT -> ML_CONNECT"); 106 ESP_LOGI(TAG, "ML_INIT -> ML_CONNECT");
85 } 107 }
86 break; 108 break;
97 localtime_r(&now, &timeinfo); 119 localtime_r(&now, &timeinfo);
98 if (timeinfo.tm_sec == 0) { 120 if (timeinfo.tm_sec == 0) {
99 Main_Loop = ML_RUN; 121 Main_Loop = ML_RUN;
100 ESP_LOGI(TAG, "ML_SYNC -> ML_RUN"); 122 ESP_LOGI(TAG, "ML_SYNC -> ML_RUN");
101 request_DCF(true); 123 request_DCF(true);
102 gpio_set_level(CONFIG_LED2_PIN, 1);
103 gpio_set_level(CONFIG_LED1_PIN, 0);
104 } 124 }
105 break; 125 break;
106 case ML_RUN: if (System_TimeOk == false) { 126 case ML_RUN: if (System_TimeOk == false) {
107 Main_Loop = ML_CONNECT; 127 Main_Loop = ML_CONNECT;
108 ESP_LOGI(TAG, "ML_RUN -> ML_CONNECT"); 128 ESP_LOGI(TAG, "ML_RUN -> ML_CONNECT");
109 request_DCF(false); 129 request_DCF(false);
110 gpio_set_level(CONFIG_LED1_PIN, 0);
111 gpio_set_level(CONFIG_LED2_PIN, 0);
112 } 130 }
113 break; 131 break;
114 } 132 }
115 133
116 vTaskDelay(10 / portTICK_PERIOD_MS); 134 vTaskDelay(10 / portTICK_PERIOD_MS);

mercurial