diff --git a/src/modules/logger/logger.cpp b/src/modules/logger/logger.cpp index 4412809f79..c736d34c1f 100644 --- a/src/modules/logger/logger.cpp +++ b/src/modules/logger/logger.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -51,6 +52,7 @@ #include #include #include +#include #ifdef __PX4_DARWIN #include @@ -82,7 +84,6 @@ static int logger_task = -1; static pthread_t writer_thread; -char *Logger::_replay_file_name = nullptr; int logger_main(int argc, char *argv[]) { @@ -312,6 +313,13 @@ void Logger::run_trampoline(int argc, char *argv[]) PX4_ERR("alloc failed"); } else { + //check for replay mode + const char *logfile = getenv(px4::replay::ENV_FILENAME); + + if (logfile) { + logger_ptr->setReplayFile(logfile); + } + logger_ptr->run(); } @@ -353,6 +361,10 @@ Logger::~Logger() } while (logger_task != -1); } + if (_replay_file_name) { + free(_replay_file_name); + } + if (_msg_buffer) { delete[](_msg_buffer); } diff --git a/src/modules/logger/logger.h b/src/modules/logger/logger.h index d1e96658fe..6270837ec6 100644 --- a/src/modules/logger/logger.h +++ b/src/modules/logger/logger.h @@ -85,7 +85,7 @@ public: * before starting the logger. * @param file_name file name of the used log replay file. Will be copied. */ - static void setReplayFile(const char *file_name); + void setReplayFile(const char *file_name); /** * Add a topic to be logged. This must be called before start_log() @@ -233,8 +233,7 @@ private: param_t _log_utc_offset; orb_advert_t _mavlink_log_pub = nullptr; uint16_t _next_topic_id; ///< id of next subscribed topic - - static char *_replay_file_name; + char *_replay_file_name = nullptr; }; } //namespace logger