From 1719d9a957d847d51aa68ac2116ee542d6261585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Tue, 17 May 2016 11:10:37 +0200 Subject: [PATCH] logger: add a file magic --- src/modules/logger/logger.cpp | 25 +++++++++++++++++++++++++ src/modules/logger/logger.h | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/src/modules/logger/logger.cpp b/src/modules/logger/logger.cpp index 90c311a58f..9fe9ae799f 100644 --- a/src/modules/logger/logger.cpp +++ b/src/modules/logger/logger.cpp @@ -291,6 +291,13 @@ enum class MessageType : uint8_t { /* declare message data structs with byte alignment (no padding) */ #pragma pack(push, 1) + +/** first bytes of the file */ +struct message_file_header_s { + uint8_t magic[8]; + uint64_t timestamp; +}; + struct message_format_s { uint8_t msg_type = static_cast(MessageType::FORMAT); uint16_t msg_size; @@ -849,6 +856,7 @@ void Logger::start_log() mavlink_log_info(&_mavlink_log_pub, "[logger] file: %s", file_name); _writer.start_log(file_name); + write_header(); write_version(); write_formats(); write_parameters(); @@ -926,6 +934,23 @@ void Logger::write_info(const char *name, const char *value) _writer.unlock(); } +void Logger::write_header() +{ + message_file_header_s header; + header.magic[0] = 'U'; + header.magic[1] = 'L'; + header.magic[2] = 'o'; + header.magic[3] = 'g'; + header.magic[4] = 0x01; + header.magic[5] = 0x12; + header.magic[6] = 0x35; + header.magic[7] = 0x00; //file version 0 + header.timestamp = hrt_absolute_time(); + _writer.lock(); + write_wait(&header, sizeof(header)); + _writer.unlock(); +} + /* write version info messages */ void Logger::write_version() { diff --git a/src/modules/logger/logger.h b/src/modules/logger/logger.h index 36b4bae958..c2b81b097b 100644 --- a/src/modules/logger/logger.h +++ b/src/modules/logger/logger.h @@ -118,6 +118,11 @@ private: void stop_log(); + /** + * write the file header with file magic and timestamp. + */ + void write_header(); + void write_formats(); void write_version();