From 99914fe09068568d310a11bfafe4058bcc5add86 Mon Sep 17 00:00:00 2001 From: imi415 Date: Tue, 27 Jul 2021 01:14:56 +0800 Subject: [PATCH] Log format enhanced, match LVGL log level to INFO. --- CMakeLists.txt | 1 + include/impl/user_mqtt_impl.h | 2 +- include/utils/user_log_util.h | 10 +++++----- include/utils/user_system_util.h | 6 ++++++ misc/agent_config.cfg.example | 16 +++++++++++++++- src/impl/user_lvgl_impl.c | 2 +- src/impl/user_mqtt_impl.c | 11 ++++++++++- src/main.c | 5 +++++ src/utils/user_log_util.c | 2 +- src/utils/user_system_util.c | 18 ++++++++++++++++++ 10 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 include/utils/user_system_util.h create mode 100644 src/utils/user_system_util.c diff --git a/CMakeLists.txt b/CMakeLists.txt index ca4a341..84108ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ set(C_SOURCES "src/tasks/user_base_task.c" "src/tasks/user_mqtt_task.c" "src/utils/user_log_util.c" + "src/utils/user_system_util.c" "src/assets/encode_sans_sc_light_24.c" "src/assets/encode_sans_sc_regular_32.c" "src/assets/encode_sans_sc_bold_48.c" diff --git a/include/impl/user_mqtt_impl.h b/include/impl/user_mqtt_impl.h index 0eea390..cadc829 100644 --- a/include/impl/user_mqtt_impl.h +++ b/include/impl/user_mqtt_impl.h @@ -7,7 +7,7 @@ #include "mqtt_influx.h" typedef struct { - struct mosquito *mosq; + struct mosquitto *mosq; } user_mqtt_impl_t; int user_mqtt_impl_init(user_mqtt_impl_t *handle); diff --git a/include/utils/user_log_util.h b/include/utils/user_log_util.h index 531ca9f..e8037ab 100644 --- a/include/utils/user_log_util.h +++ b/include/utils/user_log_util.h @@ -4,15 +4,15 @@ #include typedef enum { - USER_LOG_DEBUG = 1, - USER_LOG_INFO, - USER_LOG_WARN, + USER_LOG_FATAL = 1, USER_LOG_ERROR, - USER_LOG_FATAL + USER_LOG_WARN, + USER_LOG_INFO, + USER_LOG_DEBUG, } user_log_level_t; #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) -#define USER_LOG(level, fmt, ...) user_log_print(level, "[%s:%d] " fmt, __FILENAME__, __LINE__, ##__VA_ARGS__) +#define USER_LOG(level, fmt, ...) user_log_print(level, "[% 24s:%04d] " fmt, __FILENAME__, __LINE__, ##__VA_ARGS__) void user_log_set_level(user_log_level_t level); void user_log_print(user_log_level_t level, char *fmt, ...); diff --git a/include/utils/user_system_util.h b/include/utils/user_system_util.h new file mode 100644 index 0000000..a909a5c --- /dev/null +++ b/include/utils/user_system_util.h @@ -0,0 +1,6 @@ +#ifndef USER_SYSTEM_UTIL_H +#define USER_SYSTEM_UTIL_H + +int user_system_get_systemd_unique_id(char *uuid); + +#endif \ No newline at end of file diff --git a/misc/agent_config.cfg.example b/misc/agent_config.cfg.example index 31e1be9..8b4fdfa 100644 --- a/misc/agent_config.cfg.example +++ b/misc/agent_config.cfg.example @@ -69,7 +69,21 @@ agent: { libraries: { lvgl: { - fs_base = ""; + fs_base = ""; # This will be used as LVGL base file system and will be mounted at drive A: + }; + mqtt: { + client: { + id_prefix = ""; + server_host = "127.0.0.1"; + server_port = 1883; + }; + tls: { + enabled = false; + psk = ""; + ca_file = ""; + client_cert_file = ""; + client_key_file = ""; + }; }; }; diff --git a/src/impl/user_lvgl_impl.c b/src/impl/user_lvgl_impl.c index bfd6afc..b338191 100644 --- a/src/impl/user_lvgl_impl.c +++ b/src/impl/user_lvgl_impl.c @@ -84,7 +84,7 @@ void user_lvgl_impl_indev_read_cb(lv_indev_drv_t *drv, lv_indev_data_t *data) { } void user_lvgl_impl_log_cb(const char *buf) { - USER_LOG(USER_LOG_DEBUG, "LVGL: %s", buf); + USER_LOG(USER_LOG_INFO, "LVGL: %s", buf); } void *user_lvgl_impl_fs_open_cb(lv_fs_drv_t *drv, const char *path, diff --git a/src/impl/user_mqtt_impl.c b/src/impl/user_mqtt_impl.c index 1e75628..98d23c7 100644 --- a/src/impl/user_mqtt_impl.c +++ b/src/impl/user_mqtt_impl.c @@ -6,12 +6,17 @@ #include "utils/user_log_util.h" +// TODO: Add callbacks here as static functions. + int user_mqtt_impl_init(user_mqtt_impl_t *handle) { int mosq_major, mosq_minor, mosq_revision; mosquitto_lib_init(); mosquitto_lib_version(&mosq_major, &mosq_minor, &mosq_revision); - USER_LOG(USER_LOG_INFO, "libmosquitto version %d.%d rev. %d.", mosq_major, mosq_minor, mosq_revision); + USER_LOG(USER_LOG_INFO, "libmosquitto library version %d.%d rev. %d.", mosq_major, mosq_minor, mosq_revision); + + // Init mosquitto instance. + //handle->mosq = mosquitto_new(); return 0; } @@ -22,6 +27,10 @@ int user_mqtt_impl_deinit(user_mqtt_impl_t *handle) { return 0; } +int user_mqtt_network_loop(user_mqtt_impl_t *handle) { + return mosquitto_loop(handle->mosq, 1000, 1); +} + mqtt_influx_ret_t user_mqtt_get_nsec_timestamp_cb(user_mqtt_impl_t *handle, char *timestamp_string) { struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); diff --git a/src/main.c b/src/main.c index 9c91e45..aa17ae9 100644 --- a/src/main.c +++ b/src/main.c @@ -9,6 +9,7 @@ #include "drivers/user_config_driver.h" #include "drivers/user_spi_driver.h" #include "utils/user_log_util.h" +#include "utils/user_system_util.h" #include "tasks/user_tasks.h" uint8_t g_running = 1; @@ -43,6 +44,10 @@ int main(int argc, const char *argv[]) { user_config_lookup_int(&g_config, "agent.common.log_level", (int *)&log_level); user_log_set_level(log_level); + char system_uuid[33] = { 0x00 }; + user_system_get_systemd_unique_id(system_uuid); + USER_LOG(USER_LOG_INFO, "System UUID: %s", system_uuid); + user_mqtt_task_init(); user_lvgl_task_init(); user_base_task_init(); diff --git a/src/utils/user_log_util.c b/src/utils/user_log_util.c index 0563e9e..cf171f0 100644 --- a/src/utils/user_log_util.c +++ b/src/utils/user_log_util.c @@ -17,7 +17,7 @@ void user_log_set_level(user_log_level_t level) { void user_log_print(user_log_level_t level, char *fmt, ...) { - if(level < s_current_level) return; + if(level > s_current_level) return; while(s_lock) { usleep(1000); diff --git a/src/utils/user_system_util.c b/src/utils/user_system_util.c new file mode 100644 index 0000000..cd9f72a --- /dev/null +++ b/src/utils/user_system_util.c @@ -0,0 +1,18 @@ +#include +#include +#include + +// For systemd-based system, we can use an uuid generated by systemd during first boot. +int user_system_get_systemd_unique_id(char *uuid) { + int machid_fd = open("/etc/machine-id", O_RDONLY); + if(machid_fd < 0) return -1; + + if(read(machid_fd, uuid, 32) < 32) { + close(machid_fd); + return -2; + } + + close(machid_fd); + + return 0; +} \ No newline at end of file