2021-03-14 07:00:33 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <pthread.h>
|
|
|
|
#include <signal.h>
|
2021-07-14 16:20:04 +00:00
|
|
|
#include <string.h>
|
2021-03-14 07:00:33 +00:00
|
|
|
|
2021-07-28 16:11:32 +00:00
|
|
|
#include "user_common.h"
|
2021-03-14 15:47:28 +00:00
|
|
|
#include "drivers/user_config_driver.h"
|
|
|
|
#include "drivers/user_spi_driver.h"
|
|
|
|
#include "utils/user_log_util.h"
|
2021-07-26 17:14:56 +00:00
|
|
|
#include "utils/user_system_util.h"
|
2021-03-14 07:00:33 +00:00
|
|
|
#include "tasks/user_tasks.h"
|
|
|
|
|
|
|
|
uint8_t g_running = 1;
|
|
|
|
|
2021-03-14 15:47:28 +00:00
|
|
|
user_config_t g_config;
|
|
|
|
|
|
|
|
static void signal_handler(int signo) {
|
2021-07-14 16:20:04 +00:00
|
|
|
if(signo == SIGINT || signo == SIGTERM) {
|
2021-03-14 15:47:28 +00:00
|
|
|
g_running = 0;
|
|
|
|
}
|
2021-07-25 18:11:36 +00:00
|
|
|
fprintf(stderr, "\n");
|
2021-07-14 16:20:04 +00:00
|
|
|
USER_LOG(USER_LOG_INFO, "Signal [%s] captured, stopping.", strsignal(signo));
|
2021-03-14 15:47:28 +00:00
|
|
|
}
|
|
|
|
|
2021-03-14 07:00:33 +00:00
|
|
|
int main(int argc, const char *argv[]) {
|
2021-07-28 16:11:32 +00:00
|
|
|
UNUSED(argc);
|
|
|
|
UNUSED(argv);
|
|
|
|
|
2021-03-14 15:47:28 +00:00
|
|
|
USER_LOG(USER_LOG_INFO, "Application started.");
|
|
|
|
|
2021-07-14 16:20:04 +00:00
|
|
|
int signal_arr[] = { SIGINT, SIGTERM };
|
2021-10-22 20:19:46 +00:00
|
|
|
for(unsigned int i = 0; i < sizeof(signal_arr) / sizeof(int); i++) {
|
2021-07-14 16:20:04 +00:00
|
|
|
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;
|
|
|
|
}
|
2021-03-14 15:47:28 +00:00
|
|
|
}
|
|
|
|
|
2021-03-21 16:01:12 +00:00
|
|
|
if(user_config_init(&g_config, "config.cfg") != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "Failed to load config file.");
|
|
|
|
return -2;
|
|
|
|
}
|
|
|
|
|
2021-06-22 17:40:28 +00:00
|
|
|
user_log_level_t log_level = USER_LOG_INFO;
|
|
|
|
user_config_lookup_int(&g_config, "agent.common.log_level", (int *)&log_level);
|
|
|
|
user_log_set_level(log_level);
|
|
|
|
|
2021-07-26 17:14:56 +00:00
|
|
|
char system_uuid[33] = { 0x00 };
|
|
|
|
user_system_get_systemd_unique_id(system_uuid);
|
|
|
|
USER_LOG(USER_LOG_INFO, "System UUID: %s", system_uuid);
|
|
|
|
|
2021-07-27 13:47:38 +00:00
|
|
|
int rc;
|
|
|
|
if((rc = user_mqtt_task_init()) != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "MQTT task initialization failed(%d).", rc);
|
|
|
|
goto mqtt_task_init_failed;
|
|
|
|
}
|
|
|
|
if((rc = user_lvgl_task_init()) != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "LVGL task initialization failed(%d).", rc);
|
|
|
|
goto lvgl_task_init_failed;
|
|
|
|
}
|
|
|
|
if((rc = user_base_task_init()) != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "BASE task initialization failed(%d).", rc);
|
|
|
|
goto base_task_init_failed;
|
|
|
|
}
|
|
|
|
if((rc = user_clock_task_init()) != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "CLOCK task initialization failed(%d).", rc);
|
|
|
|
goto clock_task_init_failed;
|
|
|
|
}
|
|
|
|
if((rc = user_dht_task_init()) != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "DHT task initialization failed(%d).", rc);
|
|
|
|
goto dht_task_init_failed;
|
|
|
|
}
|
|
|
|
if((rc = user_tvoc_task_init()) != 0) {
|
|
|
|
USER_LOG(USER_LOG_FATAL, "TVOC task initialization failed(%d).", rc);
|
|
|
|
goto tvoc_task_init_failed;
|
|
|
|
}
|
|
|
|
|
|
|
|
USER_LOG(USER_LOG_INFO, "Initialized, main thread now going to sleep.");
|
2021-03-14 07:00:33 +00:00
|
|
|
while(g_running) {
|
|
|
|
sleep(1);
|
|
|
|
}
|
2021-03-14 15:47:28 +00:00
|
|
|
|
2021-07-27 13:47:38 +00:00
|
|
|
tvoc_task_init_failed:
|
2021-07-14 16:20:04 +00:00
|
|
|
user_tvoc_task_deinit();
|
2021-07-27 13:47:38 +00:00
|
|
|
dht_task_init_failed:
|
2021-07-06 17:40:58 +00:00
|
|
|
user_dht_task_deinit();
|
2021-07-27 13:47:38 +00:00
|
|
|
clock_task_init_failed:
|
2021-06-21 17:27:32 +00:00
|
|
|
user_clock_task_deinit();
|
2021-07-27 13:47:38 +00:00
|
|
|
base_task_init_failed:
|
2021-07-05 16:03:09 +00:00
|
|
|
user_base_task_deinit();
|
2021-07-27 13:47:38 +00:00
|
|
|
lvgl_task_init_failed:
|
2021-03-14 07:00:33 +00:00
|
|
|
user_lvgl_task_deinit();
|
2021-07-27 13:47:38 +00:00
|
|
|
mqtt_task_init_failed:
|
2021-07-18 17:26:17 +00:00
|
|
|
user_mqtt_task_deinit();
|
2021-03-14 15:47:28 +00:00
|
|
|
|
|
|
|
user_config_deinit(&g_config);
|
|
|
|
|
|
|
|
USER_LOG(USER_LOG_INFO, "Application exit.");
|
|
|
|
|
2021-03-14 07:00:33 +00:00
|
|
|
return 0;
|
2021-03-14 15:59:30 +00:00
|
|
|
}
|