Browse Source

Copter: add prev_control_mode and prev_control_reason

master
Jonathan Challinger 9 years ago committed by Randy Mackay
parent
commit
2a36c32cf3
  1. 3
      ArduCopter/Copter.h
  2. 7
      ArduCopter/flight_mode.cpp

3
ArduCopter/Copter.h

@ -249,6 +249,9 @@ private:
control_mode_t control_mode; control_mode_t control_mode;
mode_reason_t control_mode_reason = MODE_REASON_UNKNOWN; mode_reason_t control_mode_reason = MODE_REASON_UNKNOWN;
control_mode_t prev_control_mode;
mode_reason_t prev_control_mode_reason = MODE_REASON_UNKNOWN;
// Structure used to detect changes in the flight mode control switch // Structure used to detect changes in the flight mode control switch
struct { struct {
int8_t debounced_switch_position; // currently used switch position int8_t debounced_switch_position; // currently used switch position

7
ArduCopter/flight_mode.cpp

@ -19,6 +19,9 @@ bool Copter::set_mode(control_mode_t mode, mode_reason_t reason)
// return immediately if we are already in the desired mode // return immediately if we are already in the desired mode
if (mode == control_mode) { if (mode == control_mode) {
prev_control_mode = control_mode;
prev_control_mode_reason = control_mode_reason;
control_mode_reason = reason; control_mode_reason = reason;
return true; return true;
} }
@ -109,6 +112,10 @@ bool Copter::set_mode(control_mode_t mode, mode_reason_t reason)
if (success) { if (success) {
// perform any cleanup required by previous flight mode // perform any cleanup required by previous flight mode
exit_mode(control_mode, (control_mode_t)mode); exit_mode(control_mode, (control_mode_t)mode);
prev_control_mode = control_mode;
prev_control_mode_reason = control_mode_reason;
control_mode = (control_mode_t)mode; control_mode = (control_mode_t)mode;
control_mode_reason = reason; control_mode_reason = reason;
DataFlash.Log_Write_Mode(control_mode, control_mode_reason); DataFlash.Log_Write_Mode(control_mode, control_mode_reason);

Loading…
Cancel
Save