Browse Source

DataFlash: chamged FMT message to include labels

this makes it easier for MP to parse and display
master
Andrew Tridgell 12 years ago
parent
commit
709a277c7f
  1. 13
      libraries/DataFlash/DataFlash.h
  2. 2
      libraries/DataFlash/DataFlash_File.cpp
  3. 33
      libraries/DataFlash/LogFile.cpp

13
libraries/DataFlash/DataFlash.h

@ -64,13 +64,6 @@ public: @@ -64,13 +64,6 @@ public:
};
protected:
/*
print column headers
*/
void _print_format_headers(uint8_t num_types,
const struct LogStructure *structure,
AP_HAL::BetterStream *port);
/*
read and print a log entry using the format strings from the given structure
*/
@ -115,6 +108,7 @@ Format characters in the format string for binary log messages @@ -115,6 +108,7 @@ Format characters in the format string for binary log messages
f : float
n : char[4]
N : char[16]
Z : char[64]
c : int16_t * 100
C : uint16_t * 100
e : int32_t * 100
@ -141,6 +135,7 @@ struct PACKED log_Format { @@ -141,6 +135,7 @@ struct PACKED log_Format {
uint8_t length;
char name[4];
char format[16];
char labels[64];
};
struct PACKED log_Parameter {
@ -170,8 +165,8 @@ struct PACKED log_IMU { @@ -170,8 +165,8 @@ struct PACKED log_IMU {
};
#define LOG_COMMON_STRUCTURES \
{ LOG_FORMAT_MSG, sizeof(log_Parameter), \
"FMT", "BBnN", "Type,Length,Name,Format" }, \
{ LOG_FORMAT_MSG, sizeof(log_Format), \
"FMT", "BBnNZ", "Type,Length,Name,Format" }, \
{ LOG_PARAMETER_MSG, sizeof(log_Parameter), \
"PARM", "Nf", "Name,Value" }, \
{ LOG_GPS_MSG, sizeof(log_GPS), \

2
libraries/DataFlash/DataFlash_File.cpp

@ -319,8 +319,6 @@ void DataFlash_File::LogReadProcess(uint16_t log_num, @@ -319,8 +319,6 @@ void DataFlash_File::LogReadProcess(uint16_t log_num,
::lseek(_read_fd, start_page * DATAFLASH_PAGE_SIZE, SEEK_SET);
}
_print_format_headers(num_types, structure, port);
while (true) {
uint8_t data;
if (::read(_read_fd, &data, 1) != 1) {

33
libraries/DataFlash/LogFile.cpp

@ -247,23 +247,6 @@ uint16_t DataFlash_Block::find_last_page_of_log(uint16_t log_number) @@ -247,23 +247,6 @@ uint16_t DataFlash_Block::find_last_page_of_log(uint16_t log_number)
#define PGM_UINT8(addr) pgm_read_byte((const prog_char *)addr)
/*
print the log column names
*/
void DataFlash_Class::_print_format_headers(uint8_t num_types,
const struct LogStructure *structure,
AP_HAL::BetterStream *port)
{
uint8_t i;
for (i=0; i<num_types; i++) {
port->printf_P(PSTR("LABL, %S, %u, %S, %S\n"),
structure[i].name,
(unsigned)PGM_UINT8(&structure[i].msg_type),
structure[i].format,
structure[i].labels);
}
}
/*
read and print a log entry using the format strings from the given structure
*/
@ -386,6 +369,14 @@ void DataFlash_Class::_print_log_entry(uint8_t msg_type, @@ -386,6 +369,14 @@ void DataFlash_Class::_print_log_entry(uint8_t msg_type,
ofs += sizeof(v)-1;
break;
}
case 'Z': {
char v[65];
memcpy(&v, &pkt[ofs], sizeof(v));
v[sizeof(v)-1] = 0;
port->printf_P(PSTR("%s"), v);
ofs += sizeof(v)-1;
break;
}
case 'M': {
print_mode(port, pkt[ofs]);
ofs += 1;
@ -419,8 +410,6 @@ void DataFlash_Block::LogReadProcess(uint16_t log_num, @@ -419,8 +410,6 @@ void DataFlash_Block::LogReadProcess(uint16_t log_num,
FinishWrite();
}
_print_format_headers(num_types, structure, port);
StartRead(start_page);
while (true) {
@ -531,6 +520,8 @@ uint16_t DataFlash_Class::StartNewLog(uint8_t num_types, const struct LogStructu @@ -531,6 +520,8 @@ uint16_t DataFlash_Class::StartNewLog(uint8_t num_types, const struct LogStructu
// write log formats so the log is self-describing
for (uint8_t i=0; i<num_types; i++) {
Log_Write_Format(&structures[i]);
// avoid corrupting the APM1/APM2 dataflash by writing too fast
hal.scheduler->delay(10);
}
// and all current parameters
@ -548,10 +539,12 @@ void DataFlash_Class::Log_Write_Format(const struct LogStructure *s) @@ -548,10 +539,12 @@ void DataFlash_Class::Log_Write_Format(const struct LogStructure *s)
type : PGM_UINT8(&s->msg_type),
length : PGM_UINT8(&s->msg_len),
name : {},
format : {}
format : {},
labels : {}
};
strncpy_P(pkt.name, s->name, sizeof(pkt.name));
strncpy_P(pkt.format, s->format, sizeof(pkt.format));
strncpy_P(pkt.labels, s->labels, sizeof(pkt.labels));
WriteBlock(&pkt, sizeof(pkt));
}

Loading…
Cancel
Save