Copter: Heli: ensure inverted flight only in supported modes

This commit is contained in:
Iampete1 2024-02-29 23:31:38 +00:00 committed by Randy Mackay
parent 576ee75669
commit 52bffc4b4d
3 changed files with 16 additions and 1 deletions

View File

@ -421,7 +421,11 @@ bool RC_Channel_Copter::do_aux_function(const AUX_FUNC ch_option, const AuxSwitc
#if FRAME_CONFIG == HELI_FRAME #if FRAME_CONFIG == HELI_FRAME
switch (ch_flag) { switch (ch_flag) {
case AuxSwitchPos::HIGH: case AuxSwitchPos::HIGH:
copter.attitude_control->set_inverted_flight(true); if (copter.flightmode->allows_inverted()) {
copter.attitude_control->set_inverted_flight(true);
} else {
gcs().send_text(MAV_SEVERITY_WARNING, "Inverted flight not available in %s mode", copter.flightmode->name());
}
break; break;
case AuxSwitchPos::MIDDLE: case AuxSwitchPos::MIDDLE:
// nothing // nothing

View File

@ -457,6 +457,11 @@ void Copter::exit_mode(Mode *&old_flightmode,
input_manager.set_stab_col_ramp(0.0); input_manager.set_stab_col_ramp(0.0);
} }
} }
// Make sure inverted flight is disabled if not supported in the new mode
if (!new_flightmode->allows_inverted()) {
attitude_control->set_inverted_flight(false);
}
#endif //HELI_FRAME #endif //HELI_FRAME
} }

View File

@ -128,6 +128,10 @@ public:
virtual bool allows_autotune() const { return false; } virtual bool allows_autotune() const { return false; }
virtual bool allows_flip() const { return false; } virtual bool allows_flip() const { return false; }
#if FRAME_CONFIG == HELI_FRAME
virtual bool allows_inverted() const { return false; };
#endif
// return a string for this flightmode // return a string for this flightmode
virtual const char *name() const = 0; virtual const char *name() const = 0;
virtual const char *name4() const = 0; virtual const char *name4() const = 0;
@ -1574,6 +1578,8 @@ public:
bool init(bool ignore_checks) override; bool init(bool ignore_checks) override;
void run() override; void run() override;
bool allows_inverted() const override { return true; };
protected: protected:
private: private: