diff --git a/libraries/AP_HAL_Linux/RCOutput_Raspilot.cpp b/libraries/AP_HAL_Linux/RCOutput_Raspilot.cpp index 69fff69a57..5f2829f1bf 100644 --- a/libraries/AP_HAL_Linux/RCOutput_Raspilot.cpp +++ b/libraries/AP_HAL_Linux/RCOutput_Raspilot.cpp @@ -95,7 +95,7 @@ void RCOutput_Raspilot::_update(void) { int i; - if (AP_HAL::micros() - _last_update_timestamp < 10000) { + if (_corked || AP_HAL::micros() - _last_update_timestamp < 10000) { return; } @@ -141,4 +141,14 @@ void RCOutput_Raspilot::_update(void) _dev->get_semaphore()->give(); } +void RCOutput_Raspilot::cork(void) +{ + _corked = true; +} + +void RCOutput_Raspilot::push(void) +{ + _corked = false; +} + #endif // CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RASPILOT diff --git a/libraries/AP_HAL_Linux/RCOutput_Raspilot.h b/libraries/AP_HAL_Linux/RCOutput_Raspilot.h index 3eea9c95db..a2cc8d267b 100644 --- a/libraries/AP_HAL_Linux/RCOutput_Raspilot.h +++ b/libraries/AP_HAL_Linux/RCOutput_Raspilot.h @@ -15,6 +15,8 @@ public: void write(uint8_t ch, uint16_t period_us); uint16_t read(uint8_t ch); void read(uint16_t* period_us, uint8_t len); + void cork(void) override; + void push(void) override; private: void reset(); @@ -25,6 +27,7 @@ private: uint32_t _last_update_timestamp; uint16_t _frequency; uint16_t _period_us[8]; + bool _corked; }; }