Line data Source code
1 : #pragma once 2 : 3 : #include <RC_Channel/RC_Channel.h> 4 : #include "config.h" 5 : 6 : #if AP_SUB_RC_ENABLED 7 : class RC_Channel_Sub : public RC_Channel 8 : { 9 : 10 : public: 11 : 12 : protected: 13 : 14 : __INITFUNC__ void init_aux_function(AUX_FUNC ch_option, AuxSwitchPos) override; 15 : bool do_aux_function(const AuxFuncTrigger &trigger) override; 16 : 17 : private: 18 : // called when the mode switch changes position: 19 : void mode_switch_changed(modeswitch_pos_t new_pos) override; 20 : }; 21 : 22 : class RC_Channels_Sub : public RC_Channels 23 : { 24 : public: 25 : bool has_valid_input() const override; 26 : bool in_rc_failsafe() const override; 27 : // returns true if throttle arming checks should be run 28 : bool arming_check_throttle() const override; 29 : 30 : bool has_pilot_input_for_override_clear() override; 31 : 32 : RC_Channel_Sub obj_channels[NUM_RC_CHANNELS]; 33 24705050 : RC_Channel_Sub *channel(const uint8_t chan) override { 34 24705050 : if (chan >= ARRAY_SIZE(obj_channels)) { 35 0 : return nullptr; 36 : } 37 24705050 : return &obj_channels[chan]; 38 : } 39 0 : const RC_Channel_Sub *channel(const uint8_t chan) const override { 40 0 : if (chan >= ARRAY_SIZE(obj_channels)) { 41 0 : return nullptr; 42 : } 43 0 : return &obj_channels[chan]; 44 : } 45 : 46 : protected: 47 : 48 : // note that these callbacks are not presently used on Plane: 49 : int8_t flight_mode_channel_number() const override; 50 : 51 : }; 52 : 53 : #else 54 : 55 : class RC_Channel_Sub : public RC_Channel 56 : { 57 : 58 : public: 59 : 60 : protected: 61 : 62 : private: 63 : 64 : }; 65 : 66 : class RC_Channels_Sub : public RC_Channels 67 : { 68 : public: 69 : 70 : RC_Channel_Sub obj_channels[NUM_RC_CHANNELS]; 71 : RC_Channel_Sub *channel(const uint8_t chan) override { 72 : if (chan >= ARRAY_SIZE(obj_channels)) { 73 : return nullptr; 74 : } 75 : return &obj_channels[chan]; 76 : } 77 : const RC_Channel_Sub *channel(const uint8_t chan) const override { 78 : if (chan >= ARRAY_SIZE(obj_channels)) { 79 : return nullptr; 80 : } 81 : return &obj_channels[chan]; 82 : } 83 : 84 : // tell the gimbal code all is good with RC input: 85 : bool in_rc_failsafe() const override { return false; }; 86 : bool arming_check_throttle() const override; 87 : 88 : protected: 89 : 90 : // note that these callbacks are not presently used on Plane: 91 : int8_t flight_mode_channel_number() const override; 92 : 93 : }; 94 : #endif 95 : 96 :