From e50dd7c364350f02f03956941b3f88916072612e Mon Sep 17 00:00:00 2001 From: roangel Date: Wed, 28 Aug 2019 08:13:50 +0200 Subject: [PATCH] replay: close replay log file after replay is finished, then exit (#11264) --- boards/px4/sitl/src/CMakeLists.txt | 2 + boards/px4/sitl/src/board_config.h | 2 +- boards/px4/sitl/src/sitl_board_shutdown.c | 52 ++++++++++++++++++++ platforms/posix/src/px4_layer/CMakeLists.txt | 2 +- src/modules/replay/replay_main.cpp | 5 +- src/modules/simulator/ledsim/CMakeLists.txt | 2 +- 6 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 boards/px4/sitl/src/sitl_board_shutdown.c diff --git a/boards/px4/sitl/src/CMakeLists.txt b/boards/px4/sitl/src/CMakeLists.txt index 0e81fc2b7b73..d3156ed0dcdf 100644 --- a/boards/px4/sitl/src/CMakeLists.txt +++ b/boards/px4/sitl/src/CMakeLists.txt @@ -34,4 +34,6 @@ add_library(drivers_board ${PX4_SOURCE_DIR}/src/drivers/boards/common/board_identity.c # TODO: this is horrible and should be fixed sitl_led.c + sitl_board_shutdown.c ) + diff --git a/boards/px4/sitl/src/board_config.h b/boards/px4/sitl/src/board_config.h index ab201f26b238..376d867694a7 100644 --- a/boards/px4/sitl/src/board_config.h +++ b/boards/px4/sitl/src/board_config.h @@ -44,7 +44,7 @@ #define BOARD_BATTERY1_V_DIV (10.177939394f) #define BOARD_BATTERY1_A_PER_V (15.391030303f) -#define BOARD_HAS_NO_RESET +#define BOARD_HAS_POWER_CONTROL #define BOARD_HAS_NO_BOOTLOADER #define PX4_I2C_BUS_EXPANSION 1 diff --git a/boards/px4/sitl/src/sitl_board_shutdown.c b/boards/px4/sitl/src/sitl_board_shutdown.c new file mode 100644 index 000000000000..9ca9326a5365 --- /dev/null +++ b/boards/px4/sitl/src/sitl_board_shutdown.c @@ -0,0 +1,52 @@ +/**************************************************************************** + * + * Copyright (c) 2013 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file sitl_board_shutdown.c + * + * sitl board shutdown backend. + */ + +#include +#include + +int board_register_power_state_notification_cb(power_button_state_notification_t cb) +{ + return 0; +} + +int board_shutdown() +{ + px4_systemreset(false); + return 0; +} diff --git a/platforms/posix/src/px4_layer/CMakeLists.txt b/platforms/posix/src/px4_layer/CMakeLists.txt index ffa06384614d..a7024ce972e2 100644 --- a/platforms/posix/src/px4_layer/CMakeLists.txt +++ b/platforms/posix/src/px4_layer/CMakeLists.txt @@ -56,7 +56,7 @@ add_library(px4_layer target_compile_definitions(px4_layer PRIVATE MODULE_NAME="px4") target_compile_options(px4_layer PRIVATE -Wno-cast-align) # TODO: fix and enable target_link_libraries(px4_layer PRIVATE work_queue px4_work_queue) -target_link_libraries(px4_layer PRIVATE px4_daemon) +target_link_libraries(px4_layer PRIVATE px4_daemon drivers_board) if(ENABLE_LOCKSTEP_SCHEDULER) target_link_libraries(px4_layer PRIVATE lockstep_scheduler) diff --git a/src/modules/replay/replay_main.cpp b/src/modules/replay/replay_main.cpp index b141e4c5059e..e1f897b3d54c 100644 --- a/src/modules/replay/replay_main.cpp +++ b/src/modules/replay/replay_main.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include #include @@ -847,7 +848,9 @@ void Replay::run() PX4_INFO("Replay done (published %u msgs, %.3lf s)", nr_published_messages, (double)hrt_elapsed_time(&_replay_start_time) / 1.e6); - //TODO: should we close the log file & exit (optionally, by adding a parameter -q) ? + //TODO: add parameter -q? + replay_file.close(); + px4_shutdown_request(false, false); } onExitMainLoop(); diff --git a/src/modules/simulator/ledsim/CMakeLists.txt b/src/modules/simulator/ledsim/CMakeLists.txt index c8f9cbc012ed..b8d3ce64e019 100644 --- a/src/modules/simulator/ledsim/CMakeLists.txt +++ b/src/modules/simulator/ledsim/CMakeLists.txt @@ -32,4 +32,4 @@ ############################################################################ px4_add_library(drivers__ledsim led.cpp) -target_link_libraries(drivers__ledsim PRIVATE drivers__led drivers_board) +target_link_libraries(drivers__ledsim PRIVATE drivers__led)