DataFlash: factor out validate_structure

This commit is contained in:
Peter Barker 2017-11-08 15:55:06 +11:00 committed by Francisco Ferreira
parent 8d7000db2c
commit 5070628230
2 changed files with 98 additions and 88 deletions

View File

@ -204,15 +204,10 @@ void DataFlash_Class::dump_structures(const struct LogStructure *logstructures,
#endif
}
void DataFlash_Class::validate_structures(const struct LogStructure *logstructures, const uint8_t num_types)
bool DataFlash_Class::validate_structure(const struct LogStructure *logstructure, const int16_t offset)
{
Debug("Validating structures");
bool passed = true;
bool seen_ids[256] = { };
for (uint16_t i=0; i<num_types; i++) {
const struct LogStructure *logstructure = &logstructures[i];
#if DEBUG_LOG_STRUCTURES
Debug("offset=%d ID=%d NAME=%s\n", i, logstructure->msg_type, logstructure->name);
#endif
@ -225,7 +220,7 @@ void DataFlash_Class::validate_structures(const struct LogStructure *logstructur
// ensure each message ID is only used once
if (seen_ids[logstructure->msg_type]) {
Debug("ID %d used twice (LogStructure offset=%d)", logstructure->msg_type, i);
Debug("ID %d used twice (LogStructure offset=%d)", logstructure->msg_type, offset);
passed = false;
}
seen_ids[logstructure->msg_type] = true;
@ -299,6 +294,17 @@ void DataFlash_Class::validate_structures(const struct LogStructure *logstructur
passed = false;
}
}
return passed;
}
void DataFlash_Class::validate_structures(const struct LogStructure *logstructures, const uint8_t num_types)
{
Debug("Validating structures");
bool passed = true;
for (uint16_t i=0; i<num_types; i++) {
const struct LogStructure *logstructure = &logstructures[i];
passed = validate_structure(logstructure, i) && passed;
}
if (!passed) {
Debug("Log structures are invalid");

View File

@ -319,11 +319,15 @@ private:
private:
static DataFlash_Class *_instance;
bool validate_structure(const struct LogStructure *logstructure, int16_t offset);
void validate_structures(const struct LogStructure *logstructures, const uint8_t num_types);
void dump_structure_field(const struct LogStructure *logstructure, const char *label, const uint8_t fieldnum);
void dump_structures(const struct LogStructure *logstructures, const uint8_t num_types);
const char* unit_name(const uint8_t unit_id);
double multiplier_name(const uint8_t multiplier_id);
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
bool seen_ids[256] = { };
#endif
void Log_Write_EKF_Timing(const char *name, uint64_t time_us, const struct ekf_timing &timing);