From 031c97db305640a6756093f7f199d2b8d55a5721 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 11 Dec 2019 13:08:08 +1100 Subject: [PATCH] AP_Logger: correct Write() containing 'a' entries --- libraries/AP_Logger/AP_Logger_Backend.cpp | 7 ++ .../AP_Logger_AllTypes/AP_Logger_AllTypes.cpp | 101 ++++++++++++------ 2 files changed, 77 insertions(+), 31 deletions(-) diff --git a/libraries/AP_Logger/AP_Logger_Backend.cpp b/libraries/AP_Logger/AP_Logger_Backend.cpp index 1c93d62025..4bb62a6b09 100644 --- a/libraries/AP_Logger/AP_Logger_Backend.cpp +++ b/libraries/AP_Logger/AP_Logger_Backend.cpp @@ -278,6 +278,13 @@ bool AP_Logger_Backend::Write(const uint8_t msg_type, va_list arg_list, bool is_ offset += sizeof(uint64_t); break; } + case 'a': { + int16_t *tmp = va_arg(arg_list, int16_t*); + const uint8_t bytes = 32*2; + memcpy(&buffer[offset], tmp, bytes); + offset += bytes; + break; + } } if (charlen != 0) { char *tmp = va_arg(arg_list, char*); diff --git a/libraries/AP_Logger/examples/AP_Logger_AllTypes/AP_Logger_AllTypes.cpp b/libraries/AP_Logger/examples/AP_Logger_AllTypes/AP_Logger_AllTypes.cpp index 2d635121f5..ab355467c0 100644 --- a/libraries/AP_Logger/examples/AP_Logger_AllTypes/AP_Logger_AllTypes.cpp +++ b/libraries/AP_Logger/examples/AP_Logger_AllTypes/AP_Logger_AllTypes.cpp @@ -48,13 +48,27 @@ enum MyLogMessages { }; static const struct LogStructure log_structure[] = { + { LOG_FORMAT_MSG, + sizeof(log_Format), + "FMT", + "BBnNZ", + "Type,Length,Name,Format,Columns", + "-b---", + "-----" }, + { LOG_UNIT_MSG, sizeof(log_Unit), + "UNIT", "QbZ", "TimeUS,Id,Label", "s--","F--" }, + { LOG_FORMAT_UNITS_MSG, sizeof(log_Format_Units), + "FMTU", "QBNN", "TimeUS,FmtType,UnitIds,MultIds","s---", "F---" }, + { LOG_MULT_MSG, sizeof(log_Format_Multiplier), + "MULT", "Qbd", "TimeUS,Id,Mult", "s--","F--" }, + { LOG_TYP1_MSG, sizeof(log_TYP1), "TYP1", - "QbBhHiIfdnNZ", - "TimeUS,b,B,h,H,i,I,f,d,n,N,Z", - "s-----------", - "F-----------" + "QabBhHiIfdnNZ", + "TimeUS,a,b,B,h,H,i,I,f,d,n,N,Z", + "s------------", + "F------------" }, { LOG_TYP2_MSG, sizeof(log_TYP2), @@ -118,10 +132,13 @@ void AP_LoggerTest_AllTypes::Log_Write_TypeMessages() log_num = logger.find_last_log(); hal.console->printf("Using log number %u\n", log_num); - struct log_TYP1 typ1 = { + hal.console->printf("Writing out a few messages to get formats out..."); + logger.Write_Message("Start 1"); + + struct log_TYP1 typ1{ LOG_PACKET_HEADER_INIT(LOG_TYP1_MSG), time_us : AP_HAL::micros64(), - a : { -32768, 32767, 1, -1, 0, 17 }, // int16[32] + a : { -32768, 32767, 1, -1, 0, 19 }, // int16[32] b : -17, // int8_t B : 42, // uint8_t h : -12372, // int16_t @@ -165,33 +182,55 @@ void AP_LoggerTest_AllTypes::Log_Write_TypeMessages_Log_Write() log_num = logger.find_last_log(); hal.console->printf("Using log number for Log_Write %u\n", log_num); - logger.Write("TYP3", TYP1_LBL, TYP1_FMT, - AP_HAL::micros64(), - -17, // int8_t - 42, // uint8_t - -12372, // int16_t - 19812, // uint16_t - -98234729, // int32_t - 74627293, // uint32_t - 35.87654f, // float - (double)67.7393274658293, // double - "ABCD", // char[4] - // char[16]: - "ABCDEFGHIJKLMNOP", - // char[64]: - "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" + hal.console->printf("Writing out a few messages to get formats out..."); + logger.Write_Message("Start 2"); + + logger.Write("TYPn", + "TimeUS,Str", + "Qn", + AP_HAL::micros64(), + "ABCD"); + + const int16_t a[32] = { -32768, 32767, 1, -1, 0, 17 }; + + logger.Write("TYPa", + "TimeUS,Arr", + "Qa", + AP_HAL::micros64(), + a); + + logger.Write("TYP3", + TYP1_LBL, + TYP1_FMT, + AP_HAL::micros64(), + a, // int16[32] + -17, // int8_t + 42, // uint8_t + -12372, // int16_t + 19812, // uint16_t + -98234729, // int32_t + 74627293, // uint32_t + 35.87654f, // float + (double)67.7393274658293, // double + "ABCD", // char[4] + // char[16]: + "ABCDEFGHIJKLMNOP", + // char[64]: + "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" ); - logger.Write("TYP4", TYP2_LBL, TYP2_FMT, - AP_HAL::micros64(), - -9823, // int16_t * 100 - 5436, // uint16_t * 100 - -9209238, // int32_t * 100 - 19239872, // uint32_t * 100 - -3576543, // uint32_t latitude/longitude; - 5, // uint8_t; // flight mode; - -98239832498328, // int64_t - 3432345232233432 // uint64_t + logger.Write("TYP4", + TYP2_LBL, + TYP2_FMT, + AP_HAL::micros64(), + -9823, // int16_t * 100 + 5436, // uint16_t * 100 + -9209238, // int32_t * 100 + 19239872, // uint32_t * 100 + -3576543, // uint32_t latitude/longitude; + 5, // uint8_t; // flight mode; + -98239832498328, // int64_t + 3432345232233432 // uint64_t ); // emit a message which contains NaNs: