diff --git a/libraries/AP_HAL_SITL/RCInput.cpp b/libraries/AP_HAL_SITL/RCInput.cpp index 991441d4d5..951703e22a 100644 --- a/libraries/AP_HAL_SITL/RCInput.cpp +++ b/libraries/AP_HAL_SITL/RCInput.cpp @@ -3,6 +3,7 @@ #include "RCInput.h" #include +#include using namespace HALSITL; @@ -10,10 +11,19 @@ extern const AP_HAL::HAL& hal; void RCInput::init() { + AP::RC().init(); } bool RCInput::new_input() { + if (!using_rc_protocol) { + if (AP::RC().new_input()) { + using_rc_protocol = true; + } + } + if (using_rc_protocol) { + return AP::RC().new_input(); + } if (_sitlState->new_rc_input) { _sitlState->new_rc_input = false; return true; @@ -23,6 +33,9 @@ bool RCInput::new_input() uint16_t RCInput::read(uint8_t ch) { + if (using_rc_protocol) { + return AP::RC().read(ch); + } if (ch >= num_channels()) { return 0; } @@ -42,6 +55,9 @@ uint8_t RCInput::read(uint16_t* periods, uint8_t len) uint8_t RCInput::num_channels() { + if (using_rc_protocol) { + return AP::RC().num_channels(); + } SITL::SITL *_sitl = AP::sitl(); if (_sitl) { return MIN(_sitl->rc_chancount.get(), SITL_RC_INPUT_CHANNELS); diff --git a/libraries/AP_HAL_SITL/RCInput.h b/libraries/AP_HAL_SITL/RCInput.h index d845870217..b327c87d4e 100644 --- a/libraries/AP_HAL_SITL/RCInput.h +++ b/libraries/AP_HAL_SITL/RCInput.h @@ -20,6 +20,7 @@ public: private: SITL_State *_sitlState; + bool using_rc_protocol; }; #endif diff --git a/libraries/AP_HAL_SITL/Scheduler.cpp b/libraries/AP_HAL_SITL/Scheduler.cpp index ed928bd98e..0f8543b9c6 100644 --- a/libraries/AP_HAL_SITL/Scheduler.cpp +++ b/libraries/AP_HAL_SITL/Scheduler.cpp @@ -11,6 +11,7 @@ #else #include #endif +#include using namespace HALSITL; @@ -209,6 +210,8 @@ void Scheduler::_run_io_procs() hal.storage->_timer_tick(); check_thread_stacks(); + + AP::RC().update(); } /*