diff --git a/libraries/RC_Channel/RC_Channel_aux.cpp b/libraries/RC_Channel/RC_Channel_aux.cpp index 89f7554f3c..f8c6fd64de 100644 --- a/libraries/RC_Channel/RC_Channel_aux.cpp +++ b/libraries/RC_Channel/RC_Channel_aux.cpp @@ -35,6 +35,9 @@ RC_Channel_aux::output_ch(void) case k_manual: // manual radio_out = radio_in; break; + case k_rcin1 ... k_rcin8: // rc pass-thru + radio_out = hal.rcin->read(function-k_rcin1); + break; case k_motor1 ... k_motor8: // handled by AP_Motors::rc_write() return; @@ -342,6 +345,10 @@ RC_Channel_aux::set_servo_limit(RC_Channel_aux::Aux_servo_function_t function, R // also have to override radio_in ch->radio_in = pwm; } + if (ch->function.get() >= k_rcin1 && ch->function.get() <= k_rcin8) { + // save for k_rcin* + ch->radio_in = pwm; + } } } } diff --git a/libraries/RC_Channel/RC_Channel_aux.h b/libraries/RC_Channel/RC_Channel_aux.h index 895b606484..bc2532b73b 100644 --- a/libraries/RC_Channel/RC_Channel_aux.h +++ b/libraries/RC_Channel/RC_Channel_aux.h @@ -74,6 +74,14 @@ public: k_motor6 = 38, k_motor7 = 39, k_motor8 = 40, + k_rcin1 = 51, ///< these are for pass-thru from arbitrary rc inputs + k_rcin2 = 52, + k_rcin3 = 53, + k_rcin4 = 54, + k_rcin5 = 55, + k_rcin6 = 56, + k_rcin7 = 57, + k_rcin8 = 58, k_nr_aux_servo_functions ///< This must be the last enum value (only add new values _before_ this one) } Aux_servo_function_t;