Line data Source code
1 : #pragma once 2 : 3 : #include <RC_Channel/RC_Channel.h> 4 : #include "Rover.h" 5 : #include "mode.h" 6 : 7 : class RC_Channel_Rover : public RC_Channel 8 : { 9 : 10 : public: 11 : 12 : protected: 13 : 14 : void init_aux_function(AUX_FUNC ch_option, AuxSwitchPos) override; 15 : bool do_aux_function(const AuxFuncTrigger &trigger) override; 16 : 17 : // called when the mode switch changes position: 18 : void mode_switch_changed(modeswitch_pos_t new_pos) override; 19 : 20 : private: 21 : 22 : void do_aux_function_change_mode(Mode &mode, 23 : const AuxSwitchPos ch_flag); 24 : 25 : void add_waypoint_for_current_loc(); 26 : 27 : void do_aux_function_sailboat_motor_3pos(const AuxSwitchPos ch_flag); 28 : }; 29 : 30 : class RC_Channels_Rover : public RC_Channels 31 : { 32 : 33 : public: 34 : 35 : bool in_rc_failsafe() const override; 36 : bool has_valid_input() const override; 37 : 38 : RC_Channel *get_arming_channel(void) const override; 39 : 40 : bool has_pilot_input_for_override_clear() override; 41 : 42 : RC_Channel_Rover obj_channels[NUM_RC_CHANNELS]; 43 : 44 19268651 : RC_Channel_Rover *channel(const uint8_t chan) override { 45 19268651 : if (chan >= ARRAY_SIZE(obj_channels)) { 46 0 : return nullptr; 47 : } 48 19268651 : return &obj_channels[chan]; 49 : } 50 459 : const RC_Channel_Rover *channel(const uint8_t chan) const override { 51 459 : if (chan >= ARRAY_SIZE(obj_channels)) { 52 0 : return nullptr; 53 : } 54 459 : return &obj_channels[chan]; 55 : } 56 : 57 : private: 58 : 59 : int8_t flight_mode_channel_number() const override; 60 : };