diff --git a/libraries/AP_HAL_FLYMAPLE/AP_HAL_FLYMAPLE_Main.h b/libraries/AP_HAL_FLYMAPLE/AP_HAL_FLYMAPLE_Main.h index d21edd4159..5ec7f056e7 100644 --- a/libraries/AP_HAL_FLYMAPLE/AP_HAL_FLYMAPLE_Main.h +++ b/libraries/AP_HAL_FLYMAPLE/AP_HAL_FLYMAPLE_Main.h @@ -23,11 +23,9 @@ #if CONFIG_HAL_BOARD == HAL_BOARD_FLYMAPLE #define AP_HAL_MAIN() extern "C" {\ int main (void) {\ - hal.init(0, NULL); \ - setup();\ - hal.scheduler->system_initialized(); \ - for(;;) loop();\ - return 0;\ + AP_HAL::HAL::FunCallbacks callbacks(setup, loop); \ + hal.run(0, NULL, &callbacks); \ + return 0; \ }\ } #endif // HAL_BOARD_FLYMAPLE diff --git a/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.cpp b/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.cpp index 327e9ea927..5d96ae511c 100644 --- a/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.cpp +++ b/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.cpp @@ -19,6 +19,8 @@ #include #if CONFIG_HAL_BOARD == HAL_BOARD_FLYMAPLE +#include + #include "HAL_FLYMAPLE_Class.h" #include "AP_HAL_FLYMAPLE_Private.h" @@ -85,6 +87,20 @@ void HAL_FLYMAPLE::init(int argc,char* const argv[]) const { storage->init(NULL); // Uses EEPROM.*, flash_stm* copied from AeroQuad_v3.2 } +void HAL_FLYMAPLE::run(int argc, char* const argv[], Callbacks* callbacks) const +{ + assert(callbacks); + + init(argc, argv); + + callbacks->setup(); + scheduler->system_initialized(); + + for (;;) { + callbacks->loop(); + } +} + const AP_HAL::HAL& AP_HAL::get_HAL() { static const HAL_FLYMAPLE hal; return hal; diff --git a/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.h b/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.h index 05a44b3e1c..e0acdac47b 100644 --- a/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.h +++ b/libraries/AP_HAL_FLYMAPLE/HAL_FLYMAPLE_Class.h @@ -27,6 +27,7 @@ class HAL_FLYMAPLE : public AP_HAL::HAL { public: HAL_FLYMAPLE(); void init(int argc, char * const * argv) const; + void run(int argc, char* const* argv, Callbacks* callbacks) const override; }; extern const HAL_FLYMAPLE AP_HAL_FLYMAPLE;