From: Thibaut VARÈNE Date: 2021年9月28日 10:47:18 +0000 (+0200) Subject: embedded: esptic: blink only when receiving frames X-Git-Tag: v2.2~15 X-Git-Url: http://vcs.slashdirt.org/git/?a=commitdiff_plain;h=ce9ea80004ceb256aa536a8bca3e13033f11055f;p=sw%2Ftic2json.git embedded: esptic: blink only when receiving frames Don't use a task just to blink an LED. Improve status reporting: - LED on static when boot complete - LED blinks after each received frame This contradicts Enedis-NOI-CPT_02E / 3.3 but is IMO clearer (blink, i.e. heartbeat when data is received). --- diff --git a/embedded/ESP-RTOS/esptic/main/Kconfig b/embedded/ESP-RTOS/esptic/main/Kconfig index 935303e..5b4a08a 100644 --- a/embedded/ESP-RTOS/esptic/main/Kconfig +++ b/embedded/ESP-RTOS/esptic/main/Kconfig @@ -37,5 +37,15 @@ config ESPTIC_LED_GPIO_NUM int "LED GPIO NUM" default 2 +config ESPTIC_LED_ACTIVE_HIGH + bool "LED active high" + help + Set if LED is active high, unset otherwise + +config ESPTIC_LED_ACTIVE_STATE + int + default 1 if ESPTIC_LED_ACTIVE_HIGH + default 0 + endmenu diff --git a/embedded/ESP-RTOS/esptic/main/main.c b/embedded/ESP-RTOS/esptic/main/main.c index 56d91ec..8ddda49 100644 --- a/embedded/ESP-RTOS/esptic/main/main.c +++ b/embedded/ESP-RTOS/esptic/main/main.c @@ -92,6 +92,9 @@ static void ticframecb(char * buf, size_t size, bool valid) { if (valid) sendto(Gsockfd, buf, size, 0, &Gai_addr, Gai_addrlen); + + // blink after each complete frame + gpio_set_level(LED_GPIO, !gpio_get_level(LED_GPIO)); } static void tic_task(void *pvParameter) @@ -109,19 +112,6 @@ static void tic_task(void *pvParameter) tic2json_main(yyin, TIC2JSON_OPT_MASKZEROES|TIC2JSON_OPT_DICTOUT|TIC2JSON_OPT_LONGDATE, buf, UDPBUFSIZE, ticframecb); } -static void ledhb_task(void *pvParameter) -{ - uint32_t level = 0; - - gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT); - - while (1) { - gpio_set_level(LED_GPIO, level); - level = !level; - vTaskDelay(1000 / portTICK_RATE_MS); - } -} - void app_main(void) { BaseType_t ret; @@ -147,13 +137,14 @@ void app_main(void) /* setup UDP client */ ESP_ERROR_CHECK(udp_setup()); + ESP_ERROR_CHECK(gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT)); + gpio_set_level(LED_GPIO, CONFIG_ESPTIC_LED_ACTIVE_STATE); + ret = xTaskCreate(&tic_task, "tic", 8192, NULL, 5, NULL); if (ret != pdPASS) { ESP_LOGE(TAG, "Failed to create tic task"); abort(); } - xTaskCreate(&ledhb_task, "lhb", 512, NULL, 1, NULL); - ESP_LOGI(TAG, "Rock'n'roll"); }

AltStyle によって変換されたページ (->オリジナル) /