diff --git a/components/CAN/CAN.cpp b/components/CAN/CAN.cpp index cb8c57c..d54f666 100644 --- a/components/CAN/CAN.cpp +++ b/components/CAN/CAN.cpp @@ -4,9 +4,21 @@ #include "CAN_Config.hpp" #include "can_helpers.hpp" #include "Logger.h" +#include "IO.h" +#include static const char *TAG = "CAN"; // Used for ESP_LOGx commands. See ESP-IDF Documentation + +// Helper function to get real-time timestamp in milliseconds +static int64_t get_real_timestamp() { + tm time_struct; + if (IO::Get()->rtc_handle->getTime(time_struct) == ESP_OK) { + time_t epoch = mktime(&time_struct); + return (int64_t)epoch * 1000LL; + } + return 0; // fallback to relative time will be handled by Logger +} static SemaphoreHandle_t rx_sem = xSemaphoreCreateBinary(); static TimerHandle_t timerHandle; static twai_message_t tx_message = { @@ -165,6 +177,7 @@ void CAN::rx_task() Logger::LogMessage_t log_message; sprintf(log_message.label, "CAN"); sprintf(log_message.message, "%s", log_string); + log_message.timestamp = get_real_timestamp(); Logger::log(log_message); } if (CAN_Rx_IDs.find(rx_msg.identifier) != CAN_Rx_IDs.end()) @@ -220,6 +233,7 @@ void CAN::tx_CallBack() Logger::LogMessage_t log_message; sprintf(log_message.label, "CAN"); sprintf(log_message.message, "%s", log_string); + log_message.timestamp = get_real_timestamp(); Logger::log(log_message); } if (twai_transmit(&tx_message, pdMS_TO_TICKS(1000)) != ESP_OK) @@ -250,6 +264,7 @@ void CAN::tx_CallBack() Logger::LogMessage_t log_message; sprintf(log_message.label, "CAN"); sprintf(log_message.message, "%s", log_string); + log_message.timestamp = get_real_timestamp(); Logger::log(log_message); } if (twai_transmit(&tx_message, pdMS_TO_TICKS(1000)) != ESP_OK) @@ -282,6 +297,7 @@ void CAN::tx_CallBack() Logger::LogMessage_t log_message; sprintf(log_message.label, "CAN"); sprintf(log_message.message, "%s", log_string); + log_message.timestamp = get_real_timestamp(); Logger::log(log_message); } if (twai_transmit(&tx_message, pdMS_TO_TICKS(1000)) != ESP_OK) diff --git a/components/IO/Logger.cpp b/components/IO/Logger.cpp index e70a439..9561a49 100644 --- a/components/IO/Logger.cpp +++ b/components/IO/Logger.cpp @@ -94,7 +94,10 @@ void Logger::writeLine(LogMessage_t message) void Logger::log(LogMessage_t message) { - message.timestamp = esp_timer_get_time()/1000; + // Only use relative time if timestamp is not set (0) + if (message.timestamp == 0) { + message.timestamp = esp_timer_get_time()/1000; + } if (logQueue != NULL) { if (xQueueSendToBack(logQueue, &message, 0) != pdTRUE)