logger: add airframe and system-wide default parameters

- adds new ulog message & compatibility flag
- separately add airframe and system-wide defaults
- log only non-volatile defaults that are different from the current value
- additional size is ~3KB for 100 params
This commit is contained in:
Beat Küng
2021-03-12 13:44:10 +01:00
committed by Lorenz Meier
parent b512a3d8f7
commit af8c3215f2
3 changed files with 125 additions and 2 deletions
+24
View File
@@ -33,12 +33,15 @@
#pragma once
#include <cstdint>
enum class ULogMessageType : uint8_t {
FORMAT = 'F',
DATA = 'D',
INFO = 'I',
INFO_MULTIPLE = 'M',
PARAMETER = 'P',
PARAMETER_DEFAULT = 'Q',
ADD_LOGGED_MSG = 'A',
REMOVE_LOGGED_MSG = 'R',
SYNC = 'S',
@@ -152,9 +155,30 @@ struct ulog_message_parameter_header_s {
char key[255];
};
enum class ulog_parameter_default_type_t : uint8_t {
system = (1 << 0),
current_setup = (1 << 1) //airframe default
};
inline ulog_parameter_default_type_t operator|(ulog_parameter_default_type_t a, ulog_parameter_default_type_t b)
{
return static_cast<ulog_parameter_default_type_t>(static_cast<uint8_t>(a) | static_cast<uint8_t>(b));
}
struct ulog_message_parameter_default_header_s {
uint16_t msg_size;
uint8_t msg_type = static_cast<uint8_t>(ULogMessageType::PARAMETER_DEFAULT);
ulog_parameter_default_type_t default_types;
uint8_t key_len;
char key[255];
};
#define ULOG_INCOMPAT_FLAG0_DATA_APPENDED_MASK (1<<0)
#define ULOG_COMPAT_FLAG0_DEFAULT_PARAMETERS_MASK (1<<0)
struct ulog_message_flag_bits_s {
uint16_t msg_size;
uint8_t msg_type = static_cast<uint8_t>(ULogMessageType::FLAG_BITS);