AP_Logger: log default param values

This commit is contained in:
Iampete1 2022-06-13 20:02:15 +01:00 committed by Andrew Tridgell
parent 5b290920a7
commit 63e03622d4
6 changed files with 19 additions and 11 deletions

View File

@ -865,7 +865,7 @@ void AP_Logger::Write_Mode(uint8_t mode, const ModeReason reason)
void AP_Logger::Write_Parameter(const char *name, float value) void AP_Logger::Write_Parameter(const char *name, float value)
{ {
FOR_EACH_BACKEND(Write_Parameter(name, value)); FOR_EACH_BACKEND(Write_Parameter(name, value, quiet_nanf()));
} }
void AP_Logger::Write_Mission_Cmd(const AP_Mission &mission, void AP_Logger::Write_Mission_Cmd(const AP_Mission &mission,

View File

@ -128,10 +128,11 @@ public:
bool Write_Mission_Cmd(const AP_Mission &mission, bool Write_Mission_Cmd(const AP_Mission &mission,
const AP_Mission::Mission_Command &cmd); const AP_Mission::Mission_Command &cmd);
bool Write_Mode(uint8_t mode, const ModeReason reason); bool Write_Mode(uint8_t mode, const ModeReason reason);
bool Write_Parameter(const char *name, float value); bool Write_Parameter(const char *name, float value, float default_val);
bool Write_Parameter(const AP_Param *ap, bool Write_Parameter(const AP_Param *ap,
const AP_Param::ParamToken &token, const AP_Param::ParamToken &token,
enum ap_var_type type); enum ap_var_type type,
float default_val);
bool Write_VER(); bool Write_VER();
uint32_t num_dropped(void) const { uint32_t num_dropped(void) const {

View File

@ -103,13 +103,14 @@ bool AP_Logger_Backend::Write_Format_Units(const struct LogStructure *s)
/* /*
write a parameter to the log write a parameter to the log
*/ */
bool AP_Logger_Backend::Write_Parameter(const char *name, float value) bool AP_Logger_Backend::Write_Parameter(const char *name, float value, float default_val)
{ {
struct log_Parameter pkt{ struct log_Parameter pkt{
LOG_PACKET_HEADER_INIT(LOG_PARAMETER_MSG), LOG_PACKET_HEADER_INIT(LOG_PARAMETER_MSG),
time_us : AP_HAL::micros64(), time_us : AP_HAL::micros64(),
name : {}, name : {},
value : value value : value,
default_value : default_val
}; };
strncpy_noterm(pkt.name, name, sizeof(pkt.name)); strncpy_noterm(pkt.name, name, sizeof(pkt.name));
return WriteCriticalBlock(&pkt, sizeof(pkt)); return WriteCriticalBlock(&pkt, sizeof(pkt));
@ -120,11 +121,12 @@ bool AP_Logger_Backend::Write_Parameter(const char *name, float value)
*/ */
bool AP_Logger_Backend::Write_Parameter(const AP_Param *ap, bool AP_Logger_Backend::Write_Parameter(const AP_Param *ap,
const AP_Param::ParamToken &token, const AP_Param::ParamToken &token,
enum ap_var_type type) enum ap_var_type type,
float default_val)
{ {
char name[16]; char name[16];
ap->copy_name_token(token, &name[0], sizeof(name), true); ap->copy_name_token(token, &name[0], sizeof(name), true);
return Write_Parameter(name, ap->cast_to_float(type)); return Write_Parameter(name, ap->cast_to_float(type), default_val);
} }
// Write an RCIN packet // Write an RCIN packet

View File

@ -205,6 +205,7 @@ struct PACKED log_Parameter {
uint64_t time_us; uint64_t time_us;
char name[16]; char name[16];
float value; float value;
float default_value;
}; };
struct PACKED log_DSF { struct PACKED log_DSF {
@ -920,6 +921,7 @@ struct PACKED log_VER {
// @Field: TimeUS: Time since system startup // @Field: TimeUS: Time since system startup
// @Field: Name: parameter name // @Field: Name: parameter name
// @Field: Value: parameter value // @Field: Value: parameter value
// @Field: Default: default parameter value for this board and config
// @LoggerMessage: PIDR,PIDP,PIDY,PIDA,PIDS,PIDN,PIDE // @LoggerMessage: PIDR,PIDP,PIDY,PIDA,PIDS,PIDN,PIDE
// @Description: Proportional/Integral/Derivative gain values for Roll/Pitch/Yaw/Altitude/Steering // @Description: Proportional/Integral/Derivative gain values for Roll/Pitch/Yaw/Altitude/Steering
@ -1213,7 +1215,7 @@ struct PACKED log_VER {
{ LOG_MULT_MSG, sizeof(log_Format_Multiplier), \ { LOG_MULT_MSG, sizeof(log_Format_Multiplier), \
"MULT", "Qbd", "TimeUS,Id,Mult", "s--","F--" }, \ "MULT", "Qbd", "TimeUS,Id,Mult", "s--","F--" }, \
{ LOG_PARAMETER_MSG, sizeof(log_Parameter), \ { LOG_PARAMETER_MSG, sizeof(log_Parameter), \
"PARM", "QNf", "TimeUS,Name,Value", "s--", "F--" }, \ "PARM", "QNff", "TimeUS,Name,Value,Default", "s---", "F---" }, \
LOG_STRUCTURE_FROM_GPS \ LOG_STRUCTURE_FROM_GPS \
{ LOG_MESSAGE_MSG, sizeof(log_Message), \ { LOG_MESSAGE_MSG, sizeof(log_Message), \
"MSG", "QZ", "TimeUS,Message", "s-", "F-"}, \ "MSG", "QZ", "TimeUS,Message", "s-", "F-"}, \

View File

@ -50,7 +50,8 @@ void LoggerMessageWriter_DFLogStart::reset()
_next_unit_to_send = 0; _next_unit_to_send = 0;
_next_multiplier_to_send = 0; _next_multiplier_to_send = 0;
_next_format_unit_to_send = 0; _next_format_unit_to_send = 0;
ap = AP_Param::first(&token, &type); param_default = AP::logger().quiet_nanf();
ap = AP_Param::first(&token, &type, &param_default);
} }
bool LoggerMessageWriter_DFLogStart::out_of_time_for_writing_messages() const bool LoggerMessageWriter_DFLogStart::out_of_time_for_writing_messages() const
@ -87,10 +88,11 @@ void LoggerMessageWriter_DFLogStart::process()
case Stage::PARMS: case Stage::PARMS:
while (ap) { while (ap) {
if (!_logger_backend->Write_Parameter(ap, token, type)) { if (!_logger_backend->Write_Parameter(ap, token, type, param_default)) {
return; return;
} }
ap = AP_Param::next_scalar(&token, &type); param_default = AP::logger().quiet_nanf();
ap = AP_Param::next_scalar(&token, &type, &param_default);
} }
_params_done = true; _params_done = true;

View File

@ -140,6 +140,7 @@ private:
AP_Param::ParamToken token; AP_Param::ParamToken token;
AP_Param *ap; AP_Param *ap;
float param_default;
enum ap_var_type type; enum ap_var_type type;