Browse Source

AP_Logger: simplify the message writers

Specifically:
  - Remove some unreachable nullptr checks
  - Remove a noop stage
  - Remove unneeded initilizers
mission-4.1.18
Michael du Breuil 6 years ago committed by Peter Barker
parent
commit
3f1fbbf6c6
  1. 31
      libraries/AP_Logger/LoggerMessageWriter.cpp
  2. 27
      libraries/AP_Logger/LoggerMessageWriter.h

31
libraries/AP_Logger/LoggerMessageWriter.cpp

@ -25,7 +25,7 @@ void LoggerMessageWriter_DFLogStart::reset()
_writeentiremission.reset(); _writeentiremission.reset();
_writeallrallypoints.reset(); _writeallrallypoints.reset();
stage = ls_blockwriter_stage_init; stage = ls_blockwriter_stage_formats;
next_format_to_send = 0; next_format_to_send = 0;
_next_unit_to_send = 0; _next_unit_to_send = 0;
_next_multiplier_to_send = 0; _next_multiplier_to_send = 0;
@ -36,10 +36,6 @@ void LoggerMessageWriter_DFLogStart::reset()
void LoggerMessageWriter_DFLogStart::process() void LoggerMessageWriter_DFLogStart::process()
{ {
switch(stage) { switch(stage) {
case ls_blockwriter_stage_init:
stage = ls_blockwriter_stage_formats;
FALLTHROUGH;
case ls_blockwriter_stage_formats: case ls_blockwriter_stage_formats:
// write log formats so the log is self-describing // write log formats so the log is self-describing
while (next_format_to_send < _dataflash_backend->num_types()) { while (next_format_to_send < _dataflash_backend->num_types()) {
@ -140,7 +136,7 @@ void LoggerMessageWriter_DFLogStart::process()
void LoggerMessageWriter_WriteSysInfo::reset() void LoggerMessageWriter_WriteSysInfo::reset()
{ {
LoggerMessageWriter::reset(); LoggerMessageWriter::reset();
stage = ws_blockwriter_stage_init; stage = ws_blockwriter_stage_formats;
} }
void LoggerMessageWriter_WriteSysInfo::process() { void LoggerMessageWriter_WriteSysInfo::process() {
@ -148,7 +144,7 @@ void LoggerMessageWriter_WriteSysInfo::process() {
switch(stage) { switch(stage) {
case ws_blockwriter_stage_init: case ws_blockwriter_stage_formats:
stage = ws_blockwriter_stage_firmware_string; stage = ws_blockwriter_stage_firmware_string;
FALLTHROUGH; FALLTHROUGH;
@ -200,14 +196,6 @@ void LoggerMessageWriter_WriteAllRallyPoints::process()
switch(stage) { switch(stage) {
case ar_blockwriter_stage_init:
if (_rally == nullptr) {
stage = ar_blockwriter_stage_done;
break;
}
stage = ar_blockwriter_stage_write_new_rally_message;
FALLTHROUGH;
case ar_blockwriter_stage_write_new_rally_message: case ar_blockwriter_stage_write_new_rally_message:
if (! _dataflash_backend->Write_Message("New rally")) { if (! _dataflash_backend->Write_Message("New rally")) {
return; // call me again return; // call me again
@ -241,7 +229,7 @@ void LoggerMessageWriter_WriteAllRallyPoints::process()
void LoggerMessageWriter_WriteAllRallyPoints::reset() void LoggerMessageWriter_WriteAllRallyPoints::reset()
{ {
LoggerMessageWriter::reset(); LoggerMessageWriter::reset();
stage = ar_blockwriter_stage_init; stage = ar_blockwriter_stage_write_new_rally_message;
_rally_number_to_send = 0; _rally_number_to_send = 0;
} }
@ -254,15 +242,6 @@ void LoggerMessageWriter_WriteEntireMission::process() {
switch(stage) { switch(stage) {
case em_blockwriter_stage_init:
if (_mission == nullptr) {
stage = em_blockwriter_stage_done;
break;
} else {
stage = em_blockwriter_stage_write_new_mission_message;
}
FALLTHROUGH;
case em_blockwriter_stage_write_new_mission_message: case em_blockwriter_stage_write_new_mission_message:
if (! _dataflash_backend->Write_Message("New mission")) { if (! _dataflash_backend->Write_Message("New mission")) {
return; // call me again return; // call me again
@ -296,6 +275,6 @@ void LoggerMessageWriter_WriteEntireMission::process() {
void LoggerMessageWriter_WriteEntireMission::reset() void LoggerMessageWriter_WriteEntireMission::reset()
{ {
LoggerMessageWriter::reset(); LoggerMessageWriter::reset();
stage = em_blockwriter_stage_init; stage = em_blockwriter_stage_write_new_mission_message;
_mission_number_to_send = 0; _mission_number_to_send = 0;
} }

27
libraries/AP_Logger/LoggerMessageWriter.h

@ -29,13 +29,13 @@ public:
void process() override; void process() override;
private: private:
enum write_sysinfo_blockwriter_stage { enum write_sysinfo_blockwriter_stage : uint8_t {
ws_blockwriter_stage_init, ws_blockwriter_stage_formats = 0,
ws_blockwriter_stage_firmware_string, ws_blockwriter_stage_firmware_string,
ws_blockwriter_stage_git_versions, ws_blockwriter_stage_git_versions,
ws_blockwriter_stage_system_id ws_blockwriter_stage_system_id
}; };
write_sysinfo_blockwriter_stage stage = ws_blockwriter_stage_init; write_sysinfo_blockwriter_stage stage;
}; };
class LoggerMessageWriter_WriteEntireMission : public LoggerMessageWriter { class LoggerMessageWriter_WriteEntireMission : public LoggerMessageWriter {
@ -46,14 +46,13 @@ public:
private: private:
enum entire_mission_blockwriter_stage { enum entire_mission_blockwriter_stage {
em_blockwriter_stage_init, em_blockwriter_stage_write_new_mission_message = 0,
em_blockwriter_stage_write_new_mission_message,
em_blockwriter_stage_write_mission_items, em_blockwriter_stage_write_mission_items,
em_blockwriter_stage_done em_blockwriter_stage_done
}; };
uint16_t _mission_number_to_send = 0; uint16_t _mission_number_to_send;
entire_mission_blockwriter_stage stage = em_blockwriter_stage_init; entire_mission_blockwriter_stage stage;
}; };
class LoggerMessageWriter_WriteAllRallyPoints : public LoggerMessageWriter { class LoggerMessageWriter_WriteAllRallyPoints : public LoggerMessageWriter {
@ -64,14 +63,13 @@ public:
private: private:
enum all_rally_points_blockwriter_stage { enum all_rally_points_blockwriter_stage {
ar_blockwriter_stage_init, ar_blockwriter_stage_write_new_rally_message = 0,
ar_blockwriter_stage_write_new_rally_message,
ar_blockwriter_stage_write_all_rally_points, ar_blockwriter_stage_write_all_rally_points,
ar_blockwriter_stage_done ar_blockwriter_stage_done
}; };
uint16_t _rally_number_to_send = 0; uint16_t _rally_number_to_send;
all_rally_points_blockwriter_stage stage = ar_blockwriter_stage_init; all_rally_points_blockwriter_stage stage;
}; };
class LoggerMessageWriter_DFLogStart : public LoggerMessageWriter { class LoggerMessageWriter_DFLogStart : public LoggerMessageWriter {
@ -97,8 +95,7 @@ public:
private: private:
enum log_start_blockwriter_stage { enum log_start_blockwriter_stage {
ls_blockwriter_stage_init, ls_blockwriter_stage_formats = 0,
ls_blockwriter_stage_formats,
ls_blockwriter_stage_units, ls_blockwriter_stage_units,
ls_blockwriter_stage_multipliers, ls_blockwriter_stage_multipliers,
ls_blockwriter_stage_format_units, ls_blockwriter_stage_format_units,
@ -110,9 +107,9 @@ private:
ls_blockwriter_stage_done, ls_blockwriter_stage_done,
}; };
bool _fmt_done = false; bool _fmt_done;
log_start_blockwriter_stage stage = ls_blockwriter_stage_init; log_start_blockwriter_stage stage;
uint16_t next_format_to_send; uint16_t next_format_to_send;

Loading…
Cancel
Save