From 13ab5ed0d014cfa4ee38d2b6a9e64df50ef2b4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 7 May 2018 13:16:53 +0200 Subject: [PATCH] px4_main_t: fix method declaration throughout the code base px4_main_t is defined as: typedef int (*px4_main_t)(int argc, char *argv[]); which matches with the definition in NuttX, given to task_create --- src/drivers/distance_sensor/ulanding/ulanding.cpp | 5 +++-- src/drivers/gps/gps.cpp | 5 +++-- src/examples/bottle_drop/bottle_drop.cpp | 5 +++-- .../attitude_estimator_q/attitude_estimator_q_main.cpp | 5 +++-- src/modules/events/temperature_calibration/task.cpp | 5 +++-- src/modules/gnd_att_control/GroundRoverAttitudeControl.cpp | 3 ++- src/modules/gnd_att_control/GroundRoverAttitudeControl.hpp | 2 +- src/modules/gnd_pos_control/GroundRoverPositionControl.cpp | 7 +++---- src/modules/gnd_pos_control/GroundRoverPositionControl.hpp | 2 +- src/modules/mc_pos_control/mc_pos_control_main.cpp | 5 +++-- src/modules/simulator/gpssim/gpssim.cpp | 7 ++++--- src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp | 6 +++--- src/modules/uORB/uORB_tests/uORBTest_UnitTest.hpp | 6 +++--- src/modules/vtol_att_control/vtol_att_control_main.cpp | 3 ++- src/modules/vtol_att_control/vtol_att_control_main.h | 2 +- src/platforms/px4_module.h | 6 +++++- 16 files changed, 43 insertions(+), 31 deletions(-) diff --git a/src/drivers/distance_sensor/ulanding/ulanding.cpp b/src/drivers/distance_sensor/ulanding/ulanding.cpp index 90a46a8160..c5ed24551d 100644 --- a/src/drivers/distance_sensor/ulanding/ulanding.cpp +++ b/src/drivers/distance_sensor/ulanding/ulanding.cpp @@ -122,7 +122,7 @@ private: unsigned _tail; uint8_t _buf[BUF_LEN]; - static void task_main_trampoline(int argc, char *argv[]); + static int task_main_trampoline(int argc, char *argv[]); void task_main(); bool read_and_parse(uint8_t *buf, int len, float *range); @@ -299,10 +299,11 @@ Radar::init() return ret; } -void +int Radar::task_main_trampoline(int argc, char *argv[]) { radar::g_dev->task_main(); + return 0; } int diff --git a/src/drivers/gps/gps.cpp b/src/drivers/gps/gps.cpp index 97397e5c92..f8755d8bc7 100644 --- a/src/drivers/gps/gps.cpp +++ b/src/drivers/gps/gps.cpp @@ -134,7 +134,7 @@ public: /** * task spawn trampoline for the secondary GPS */ - static void run_trampoline_secondary(int argc, char *argv[]); + static int run_trampoline_secondary(int argc, char *argv[]); /** @see ModuleBase::run() */ void run() override; @@ -997,7 +997,7 @@ int GPS::task_spawn(int argc, char *argv[], Instance instance) return 0; } -void GPS::run_trampoline_secondary(int argc, char *argv[]) +int GPS::run_trampoline_secondary(int argc, char *argv[]) { #ifdef __PX4_NUTTX @@ -1014,6 +1014,7 @@ void GPS::run_trampoline_secondary(int argc, char *argv[]) _secondary_instance = nullptr; delete gps; } + return 0; } GPS *GPS::instantiate(int argc, char *argv[]) { diff --git a/src/examples/bottle_drop/bottle_drop.cpp b/src/examples/bottle_drop/bottle_drop.cpp index 1d848c8a84..6a444e921e 100644 --- a/src/examples/bottle_drop/bottle_drop.cpp +++ b/src/examples/bottle_drop/bottle_drop.cpp @@ -158,7 +158,7 @@ private: /** * Shim for calling task_main from task_create. */ - static void task_main_trampoline(int argc, char *argv[]); + static int task_main_trampoline(int argc, char *argv[]); }; namespace bottle_drop @@ -868,10 +868,11 @@ BottleDrop::answer_command(struct vehicle_command_s *cmd, unsigned result) } } -void +int BottleDrop::task_main_trampoline(int argc, char *argv[]) { bottle_drop::g_bottle_drop->task_main(); + return 0; } static void usage() diff --git a/src/modules/attitude_estimator_q/attitude_estimator_q_main.cpp b/src/modules/attitude_estimator_q/attitude_estimator_q_main.cpp index 4a17a09391..ce2fdb1de3 100644 --- a/src/modules/attitude_estimator_q/attitude_estimator_q_main.cpp +++ b/src/modules/attitude_estimator_q/attitude_estimator_q_main.cpp @@ -91,7 +91,7 @@ public: */ int start(); - static void task_main_trampoline(int argc, char *argv[]); + static int task_main_trampoline(int argc, char *argv[]); void task_main(); @@ -243,9 +243,10 @@ int AttitudeEstimatorQ::start() return OK; } -void AttitudeEstimatorQ::task_main_trampoline(int argc, char *argv[]) +int AttitudeEstimatorQ::task_main_trampoline(int argc, char *argv[]) { attitude_estimator_q::instance->task_main(); + return 0; } void AttitudeEstimatorQ::task_main() diff --git a/src/modules/events/temperature_calibration/task.cpp b/src/modules/events/temperature_calibration/task.cpp index ddec37f7bd..6a021f7918 100644 --- a/src/modules/events/temperature_calibration/task.cpp +++ b/src/modules/events/temperature_calibration/task.cpp @@ -83,7 +83,7 @@ public: */ int start(); - static void do_temperature_calibration(int argc, char *argv[]); + static int do_temperature_calibration(int argc, char *argv[]); void task_main(); @@ -320,9 +320,10 @@ void TemperatureCalibration::task_main() PX4_INFO("Exiting temperature calibration task"); } -void TemperatureCalibration::do_temperature_calibration(int argc, char *argv[]) +int TemperatureCalibration::do_temperature_calibration(int argc, char *argv[]) { temperature_calibration::instance->task_main(); + return 0; } int TemperatureCalibration::start() diff --git a/src/modules/gnd_att_control/GroundRoverAttitudeControl.cpp b/src/modules/gnd_att_control/GroundRoverAttitudeControl.cpp index cafe2c3041..5787052427 100644 --- a/src/modules/gnd_att_control/GroundRoverAttitudeControl.cpp +++ b/src/modules/gnd_att_control/GroundRoverAttitudeControl.cpp @@ -174,10 +174,11 @@ GroundRoverAttitudeControl::battery_status_poll() } } -void +int GroundRoverAttitudeControl::task_main_trampoline(int argc, char *argv[]) { att_gnd_control::g_control->task_main(); + return 0; } void diff --git a/src/modules/gnd_att_control/GroundRoverAttitudeControl.hpp b/src/modules/gnd_att_control/GroundRoverAttitudeControl.hpp index 5a7a9d9ef8..e74c6d8cb7 100644 --- a/src/modules/gnd_att_control/GroundRoverAttitudeControl.hpp +++ b/src/modules/gnd_att_control/GroundRoverAttitudeControl.hpp @@ -136,7 +136,7 @@ private: void vehicle_attitude_setpoint_poll(); void battery_status_poll(); - static void task_main_trampoline(int argc, char *argv[]); + static int task_main_trampoline(int argc, char *argv[]); void task_main(); }; diff --git a/src/modules/gnd_pos_control/GroundRoverPositionControl.cpp b/src/modules/gnd_pos_control/GroundRoverPositionControl.cpp index 25e3a89375..42ace58265 100644 --- a/src/modules/gnd_pos_control/GroundRoverPositionControl.cpp +++ b/src/modules/gnd_pos_control/GroundRoverPositionControl.cpp @@ -479,27 +479,27 @@ GroundRoverPositionControl::task_main() _control_task = -1; } -void +int GroundRoverPositionControl::task_main_trampoline(int argc, char *argv[]) { gnd_control::g_control = new GroundRoverPositionControl(); if (gnd_control::g_control == nullptr) { warnx("OUT OF MEM"); - return; + return -1; } /* only returns on exit */ gnd_control::g_control->task_main(); delete gnd_control::g_control; gnd_control::g_control = nullptr; + return 0; } int GroundRoverPositionControl::start() { ASSERT(_control_task == -1); - warn("Starting by marco"); /* start the task */ _control_task = px4_task_spawn_cmd("gnd_pos_ctrl", @@ -508,7 +508,6 @@ GroundRoverPositionControl::start() 1700, (px4_main_t)&GroundRoverPositionControl::task_main_trampoline, nullptr); - warn("done"); if (_control_task < 0) { warn("task start failed"); diff --git a/src/modules/gnd_pos_control/GroundRoverPositionControl.hpp b/src/modules/gnd_pos_control/GroundRoverPositionControl.hpp index fdd4872c00..2badf66f94 100644 --- a/src/modules/gnd_pos_control/GroundRoverPositionControl.hpp +++ b/src/modules/gnd_pos_control/GroundRoverPositionControl.hpp @@ -202,7 +202,7 @@ private: /** * Shim for calling task_main from task_create. */ - static void task_main_trampoline(int argc, char *argv[]); + static int task_main_trampoline(int argc, char *argv[]); /** * Main sensor collection task. diff --git a/src/modules/mc_pos_control/mc_pos_control_main.cpp b/src/modules/mc_pos_control/mc_pos_control_main.cpp index c03c6507cd..734a12733d 100644 --- a/src/modules/mc_pos_control/mc_pos_control_main.cpp +++ b/src/modules/mc_pos_control/mc_pos_control_main.cpp @@ -412,7 +412,7 @@ private: /** * Shim for calling task_main from task_create. */ - static void task_main_trampoline(int argc, char *argv[]); + static int task_main_trampoline(int argc, char *argv[]); /** * Main sensor collection task. @@ -768,10 +768,11 @@ MulticopterPositionControl::throttle_curve(float ctl, float ctr) } } -void +int MulticopterPositionControl::task_main_trampoline(int argc, char *argv[]) { pos_control::g_control->task_main(); + return 0; } void diff --git a/src/modules/simulator/gpssim/gpssim.cpp b/src/modules/simulator/gpssim/gpssim.cpp index 78e4149bf0..322ab75d5f 100644 --- a/src/modules/simulator/gpssim/gpssim.cpp +++ b/src/modules/simulator/gpssim/gpssim.cpp @@ -136,7 +136,7 @@ private: /** * Trampoline to the worker task */ - static void task_main_trampoline(void *arg); + static int task_main_trampoline(int argc, char *argv[]); /** @@ -273,10 +273,11 @@ GPSSIM::devIOCTL(unsigned long cmd, unsigned long arg) return ret; } -void -GPSSIM::task_main_trampoline(void *arg) +int +GPSSIM::task_main_trampoline(int argc, char *argv[]) { g_dev->task_main(); + return 0; } int diff --git a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp index 1537a41129..e7453d1ec2 100644 --- a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp +++ b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.cpp @@ -401,7 +401,7 @@ int uORBTest::UnitTest::test_multi() -int uORBTest::UnitTest::pub_test_multi2_entry(char *const argv[]) +int uORBTest::UnitTest::pub_test_multi2_entry(int argc, char *argv[]) { uORBTest::UnitTest &t = uORBTest::UnitTest::instance(); return t.pub_test_multi2_main(); @@ -707,7 +707,7 @@ int uORBTest::UnitTest::test_queue() } -int uORBTest::UnitTest::pub_test_queue_entry(char *const argv[]) +int uORBTest::UnitTest::pub_test_queue_entry(int argc, char *argv[]) { uORBTest::UnitTest &t = uORBTest::UnitTest::instance(); return t.pub_test_queue_main(); @@ -842,7 +842,7 @@ int uORBTest::UnitTest::test_note(const char *fmt, ...) return OK; } -int uORBTest::UnitTest::pubsubtest_threadEntry(char *const argv[]) +int uORBTest::UnitTest::pubsubtest_threadEntry(int argc, char *argv[]) { uORBTest::UnitTest &t = uORBTest::UnitTest::instance(); return t.pubsublatency_main(); diff --git a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.hpp b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.hpp index 2c368ddd73..cfbcdb10c0 100644 --- a/src/modules/uORB/uORB_tests/uORBTest_UnitTest.hpp +++ b/src/modules/uORB/uORB_tests/uORBTest_UnitTest.hpp @@ -86,10 +86,10 @@ private: // Disallow copy UnitTest(const uORBTest::UnitTest & /*unused*/) = delete; - static int pubsubtest_threadEntry(char *const argv[]); + static int pubsubtest_threadEntry(int argc, char *argv[]); int pubsublatency_main(); - static int pub_test_multi2_entry(char *const argv[]); + static int pub_test_multi2_entry(int argc, char *argv[]); int pub_test_multi2_main(); volatile bool _thread_should_exit; @@ -111,7 +111,7 @@ private: /* queuing tests */ int test_queue(); - static int pub_test_queue_entry(char *const argv[]); + static int pub_test_queue_entry(int argc, char *argv[]); int pub_test_queue_main(); int test_queue_poll_notify(); volatile int _num_messages_sent = 0; diff --git a/src/modules/vtol_att_control/vtol_att_control_main.cpp b/src/modules/vtol_att_control/vtol_att_control_main.cpp index f6e2c230a4..28f608f726 100644 --- a/src/modules/vtol_att_control/vtol_att_control_main.cpp +++ b/src/modules/vtol_att_control/vtol_att_control_main.cpp @@ -572,10 +572,11 @@ void VtolAttitudeControl::fill_fw_att_rates_sp() } } -void +int VtolAttitudeControl::task_main_trampoline(int argc, char *argv[]) { VTOL_att_control::g_control->task_main(); + return 0; } void VtolAttitudeControl::task_main() diff --git a/src/modules/vtol_att_control/vtol_att_control_main.h b/src/modules/vtol_att_control/vtol_att_control_main.h index ca169e9d68..b776a4cea6 100644 --- a/src/modules/vtol_att_control/vtol_att_control_main.h +++ b/src/modules/vtol_att_control/vtol_att_control_main.h @@ -214,7 +214,7 @@ private: //*****************Member functions*********************************************************************** void task_main(); //main task - static void task_main_trampoline(int argc, char *argv[]); //Shim for calling task_main from task_create. + static int task_main_trampoline(int argc, char *argv[]); //Shim for calling task_main from task_create. void land_detected_poll(); void tecs_status_poll(); diff --git a/src/platforms/px4_module.h b/src/platforms/px4_module.h index 8a711cb0ee..887b2a5bb7 100644 --- a/src/platforms/px4_module.h +++ b/src/platforms/px4_module.h @@ -149,8 +149,9 @@ public: * @param argc start argument(s) * @param argv start argument(s) */ - static void run_trampoline(int argc, char *argv[]) + static int run_trampoline(int argc, char *argv[]) { + int ret = 0; #ifdef __PX4_NUTTX // on NuttX task_create() adds the task name as first argument @@ -166,9 +167,12 @@ public: } else { PX4_ERR("failed to instantiate object"); + ret = -1; } exit_and_cleanup(); + + return ret; } /**