Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions components/CAN/CAN.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,21 @@
#include "CAN_Config.hpp"
#include "can_helpers.hpp"
#include "Logger.h"
#include "IO.h"
#include <ctime>


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 = {
Expand Down Expand Up @@ -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())
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
5 changes: 4 additions & 1 deletion components/IO/Logger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down