From 9f05e54d908ac6d5af1cd7a659162c74167e0a16 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 15 May 2015 12:59:09 +1000 Subject: [PATCH] Replay: added support for EV message for copter arming --- Tools/Replay/LogReader.cpp | 4 ++++ Tools/Replay/MsgHandler_Event.cpp | 21 +++++++++++++++++++++ Tools/Replay/MsgHandler_Event.h | 11 +++++++++++ Tools/Replay/Replay.pde | 7 ++----- 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 Tools/Replay/MsgHandler_Event.cpp create mode 100644 Tools/Replay/MsgHandler_Event.h diff --git a/Tools/Replay/LogReader.cpp b/Tools/Replay/LogReader.cpp index c655798966..86d046e35e 100644 --- a/Tools/Replay/LogReader.cpp +++ b/Tools/Replay/LogReader.cpp @@ -27,6 +27,7 @@ #include "MsgHandler_SIM.h" #include "MsgHandler_BARO.h" #include "MsgHandler_ARM.h" +#include "MsgHandler_Event.h" #include "MsgHandler_AHR2.h" #include "MsgHandler_ATT.h" #include "MsgHandler_MAG.h" @@ -165,6 +166,9 @@ bool LogReader::update(char type[5]) } else if (streq(name, "ARM")) { msgparser[f.type] = new MsgHandler_ARM(formats[f.type], dataflash, last_timestamp_usec); + } else if (streq(name, "EV")) { + msgparser[f.type] = new MsgHandler_Event(formats[f.type], dataflash, + last_timestamp_usec); } else if (streq(name, "AHR2")) { msgparser[f.type] = new MsgHandler_AHR2(formats[f.type], dataflash, last_timestamp_usec, diff --git a/Tools/Replay/MsgHandler_Event.cpp b/Tools/Replay/MsgHandler_Event.cpp new file mode 100644 index 0000000000..d3bf9f67ba --- /dev/null +++ b/Tools/Replay/MsgHandler_Event.cpp @@ -0,0 +1,21 @@ +#include "MsgHandler_Event.h" + +extern const AP_HAL::HAL& hal; + +#define DATA_ARMED 10 +#define DATA_DISARMED 11 + +void MsgHandler_Event::process_message(uint8_t *msg) +{ + uint8_t id = require_field_uint8_t(msg, "Id"); + if (id == DATA_ARMED) { + hal.util->set_soft_armed(true); + printf("Armed at %lu\n", + (unsigned long)hal.scheduler->millis()); + } else if (id == DATA_DISARMED) { + hal.util->set_soft_armed(false); + printf("Disarmed at %lu\n", + (unsigned long)hal.scheduler->millis()); + } + dataflash.WriteBlock(msg, f.length); +} diff --git a/Tools/Replay/MsgHandler_Event.h b/Tools/Replay/MsgHandler_Event.h new file mode 100644 index 0000000000..9e15527f4a --- /dev/null +++ b/Tools/Replay/MsgHandler_Event.h @@ -0,0 +1,11 @@ +#include "MsgHandler.h" + +class MsgHandler_Event : public MsgHandler +{ +public: + MsgHandler_Event(log_Format &_f, DataFlash_Class &_dataflash, + uint64_t &_last_timestamp_usec) + : MsgHandler(_f, _dataflash, _last_timestamp_usec) { }; + + virtual void process_message(uint8_t *msg); +}; diff --git a/Tools/Replay/Replay.pde b/Tools/Replay/Replay.pde index 93f598ac11..0d2efb111c 100644 --- a/Tools/Replay/Replay.pde +++ b/Tools/Replay/Replay.pde @@ -213,11 +213,8 @@ void setup() ahrs.set_wind_estimation(true); ahrs.set_correct_centrifugal(true); - if (arm_time_ms != 0) { - hal.util->set_soft_armed(false); - } else { - hal.util->set_soft_armed(true); - } + printf("Starting disarmed\n"); + hal.util->set_soft_armed(false); barometer.init(); barometer.setHIL(0);