From d9b94256fd98e937940d7af68d511f457c4abf7c Mon Sep 17 00:00:00 2001 From: imi415 Date: Thu, 15 Jul 2021 00:20:04 +0800 Subject: [PATCH] Added TVOC task skeleton, fixed config template. --- CMakeLists.txt | 1 + include/tasks/user_tasks.h | 3 +++ misc/agent_config.cfg.pine64 | 2 -- misc/agent_config.cfg.rpi4 | 2 -- src/main.c | 16 +++++++++++----- src/tasks/user_dht_task.c | 2 ++ src/tasks/user_tvoc_task.c | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 src/tasks/user_tvoc_task.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c8fbc9..38a4b40 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ set(C_SOURCES "src/tasks/user_lvgl_task.c" "src/tasks/user_clock_task.c" "src/tasks/user_dht_task.c" + "src/tasks/user_tvoc_task.c" "src/tasks/user_base_task.c" "src/utils/user_log_util.c" "src/assets/encode_sans_sc_light_24.c" diff --git a/include/tasks/user_tasks.h b/include/tasks/user_tasks.h index 9859534..313bc67 100644 --- a/include/tasks/user_tasks.h +++ b/include/tasks/user_tasks.h @@ -13,4 +13,7 @@ int user_dht_task_deinit(void); int user_base_task_init(void); int user_base_task_deinit(void); +int user_tvoc_task_init(void); +int user_tvoc_task_deinit(void); + #endif diff --git a/misc/agent_config.cfg.pine64 b/misc/agent_config.cfg.pine64 index ff463e6..ea82ea3 100644 --- a/misc/agent_config.cfg.pine64 +++ b/misc/agent_config.cfg.pine64 @@ -23,8 +23,6 @@ agent: { }; }; - }; - lcd: { spi: { path = "/dev/spidev0.1"; diff --git a/misc/agent_config.cfg.rpi4 b/misc/agent_config.cfg.rpi4 index 3747ff0..b4538dd 100644 --- a/misc/agent_config.cfg.rpi4 +++ b/misc/agent_config.cfg.rpi4 @@ -23,8 +23,6 @@ agent: { }; }; - }; - lcd: { spi: { path = "/dev/spidev0.1"; diff --git a/src/main.c b/src/main.c index 95c7499..211cc64 100644 --- a/src/main.c +++ b/src/main.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "drivers/user_config_driver.h" #include "drivers/user_spi_driver.h" @@ -15,18 +16,21 @@ uint8_t g_running = 1; user_config_t g_config; static void signal_handler(int signo) { - if(signo == SIGINT) { + if(signo == SIGINT || signo == SIGTERM) { g_running = 0; } - USER_LOG(USER_LOG_INFO, "Signal %d captured, stopping.", signo); + USER_LOG(USER_LOG_INFO, "Signal [%s] captured, stopping.", strsignal(signo)); } int main(int argc, const char *argv[]) { USER_LOG(USER_LOG_INFO, "Application started."); - if(signal(SIGINT, signal_handler) == SIG_ERR) { - USER_LOG(USER_LOG_FATAL, "Cannot register signal handler."); - return -1; + int signal_arr[] = { SIGINT, SIGTERM }; + for(uint8_t i = 0; i < sizeof(signal_arr) / sizeof(int); i++) { + if(signal(signal_arr[i], signal_handler) == SIG_ERR) { + USER_LOG(USER_LOG_FATAL, "Cannot register signal handler %s.", strsignal(signal_arr[i])); + return -1; + } } if(user_config_init(&g_config, "config.cfg") != 0) { @@ -42,12 +46,14 @@ int main(int argc, const char *argv[]) { user_base_task_init(); user_clock_task_init(); user_dht_task_init(); + user_tvoc_task_init(); USER_LOG(USER_LOG_INFO, "Initialized, main thread sleeping."); while(g_running) { sleep(1); } + user_tvoc_task_deinit(); user_dht_task_deinit(); user_clock_task_deinit(); user_base_task_deinit(); diff --git a/src/tasks/user_dht_task.c b/src/tasks/user_dht_task.c index a97648d..c842cec 100644 --- a/src/tasks/user_dht_task.c +++ b/src/tasks/user_dht_task.c @@ -12,6 +12,8 @@ int user_dht_task_init(void) { ret = pthread_create(&user_dht_task_thread, NULL, user_dht_task, NULL); if(ret) return ret; + + pthread_setname_np(user_dht_task_thread, "DHT"); } int user_dht_task_deinit(void) { diff --git a/src/tasks/user_tvoc_task.c b/src/tasks/user_tvoc_task.c new file mode 100644 index 0000000..8fd1162 --- /dev/null +++ b/src/tasks/user_tvoc_task.c @@ -0,0 +1,33 @@ +#include + +#include "impl/user_ccs811_impl.h" + +#include "tasks/user_task_lvgl_common.h" + +void *user_tvoc_task(void *arguments); +pthread_t user_tvoc_task_thread; + +int user_tvoc_task_init(void) { + int ret; + + ret = pthread_create(&user_tvoc_task_thread, NULL, user_tvoc_task, NULL); + if(ret) return ret; + + pthread_setname_np(user_tvoc_task_thread, "TVOC"); +} + +int user_tvoc_task_deinit(void) { + pthread_join(user_tvoc_task_thread, NULL); + + return 0; +} + +void *user_tvoc_task(void *arguments) { + while(g_running && !g_lvgl_ready) { + sleep(1); + } + + while(g_running) { + sleep(1); + } +}