write git and hw version records to log

This commit is contained in:
Mark Whitehorn
2016-04-30 09:11:21 -06:00
committed by Lorenz Meier
parent 90ce04654d
commit fb4d72df86
2 changed files with 45 additions and 0 deletions

View File

@@ -669,6 +669,7 @@ void Logger::start_log()
}
_writer.start_log(file_name);
write_version();
write_formats();
write_parameters();
_enabled = true;
@@ -707,6 +708,44 @@ void Logger::write_formats()
_writer.notify();
}
/* write info message */
void Logger::write_info(const char *name, const char *value)
{
_writer.lock();
uint8_t buffer[sizeof(message_info_header_s)];
message_info_header_s *msg = reinterpret_cast<message_info_header_s *>(buffer);
msg->msg_type = static_cast<uint8_t>(MessageType::INFO);
/* construct format key (type and name) */
size_t vlen = strlen(value);
msg->key_len = snprintf(msg->key, sizeof(msg->key), "char[%d] %s", vlen, name);
size_t msg_size = sizeof(*msg) - sizeof(msg->key) + msg->key_len;
/* copy string value directly to buffer */
if (vlen < (sizeof(*msg) - msg_size)) {
memcpy(&buffer[msg_size], value, vlen);
msg_size += vlen;
msg->msg_size = msg_size - 2;
/* write message */
while (!_writer.write(buffer, msg_size)) {
/* wait if buffer is full, don't skip INFO messages */
_writer.unlock();
_writer.notify();
usleep(_log_interval);
_writer.lock();
}
}
}
/* write version info messages */
void Logger::write_version()
{
write_info("ver_sw", PX4_GIT_VERSION_STR);
write_info("ver_hw", HW_ARCH);
}
void Logger::write_parameters()
{
_writer.lock();