From 1ebf5d04d9e1bae142ac3c502e3832e88b793f85 Mon Sep 17 00:00:00 2001 From: Bharat Tak Date: Tue, 11 Jun 2019 11:00:55 +0200 Subject: [PATCH] logger: add Ulog sync bytes at 1Hz and tagged log message definition (#12144) --- src/modules/logger/logger.cpp | 22 ++++++++++++++++++++++ src/modules/logger/logger.h | 1 + src/modules/logger/messages.h | 11 +++++++++++ 3 files changed, 34 insertions(+) diff --git a/src/modules/logger/logger.cpp b/src/modules/logger/logger.cpp index 23e13a4b53..e3b57f79a6 100644 --- a/src/modules/logger/logger.cpp +++ b/src/modules/logger/logger.cpp @@ -80,6 +80,7 @@ #endif /* defined(DBGPRINT) */ using namespace px4::logger; +using namespace time_literals; struct timer_callback_data_s { @@ -1160,6 +1161,27 @@ void Logger::run() } } + // Add sync magic + if (loop_time - _last_sync_time > 500_ms) { + uint16_t write_msg_size = static_cast(sizeof(ulog_message_sync_s) - ULOG_MSG_HEADER_LEN); + _msg_buffer[0] = (uint8_t)write_msg_size; + _msg_buffer[1] = (uint8_t)(write_msg_size >> 8); + _msg_buffer[2] = static_cast(ULogMessageType::SYNC); + + // sync byte sequence + _msg_buffer[3] = 0x2F; + _msg_buffer[4] = 0x73; + _msg_buffer[5] = 0x13; + _msg_buffer[6] = 0x20; + _msg_buffer[7] = 0x25; + _msg_buffer[8] = 0x0C; + _msg_buffer[9] = 0xBB; + _msg_buffer[10] = 0x12; + + write_message(LogType::Full, _msg_buffer, write_msg_size + ULOG_MSG_HEADER_LEN); + _last_sync_time = loop_time; + } + // update buffer statistics for (int i = 0; i < (int)LogType::Count; ++i) { if (!_statistics[i].dropout_start && _writer.get_buffer_fill_count_file((LogType)i) > _statistics[i].high_water) { diff --git a/src/modules/logger/logger.h b/src/modules/logger/logger.h index 56bcfd63a6..e76146bc1d 100644 --- a/src/modules/logger/logger.h +++ b/src/modules/logger/logger.h @@ -387,6 +387,7 @@ private: bool _manually_logging_override{false}; Statistics _statistics[(int)LogType::Count]; + hrt_abstime _last_sync_time{0}; ///< last time a sync msg was sent LogMode _log_mode; const bool _log_name_timestamp; diff --git a/src/modules/logger/messages.h b/src/modules/logger/messages.h index 4274f73f93..4b877893b3 100644 --- a/src/modules/logger/messages.h +++ b/src/modules/logger/messages.h @@ -44,6 +44,7 @@ enum class ULogMessageType : uint8_t { SYNC = 'S', DROPOUT = 'O', LOGGING = 'L', + LOGGING_TAGGED = 'C', FLAG_BITS = 'B', }; @@ -133,6 +134,16 @@ struct ulog_message_logging_s { char message[128]; //defines the maximum length of a logged message string }; +struct ulog_message_logging_tagged_s { + uint16_t msg_size; //size of message - ULOG_MSG_HEADER_LEN + uint8_t msg_type = static_cast(ULogMessageType::LOGGING_TAGGED); + + uint8_t log_level; //same levels as in the linux kernel + uint16_t tag; + uint64_t timestamp; + char message[128]; //defines the maximum length of a logged message string +}; + struct ulog_message_parameter_header_s { uint16_t msg_size; uint8_t msg_type = static_cast(ULogMessageType::PARAMETER);