|
|
|
@ -257,7 +257,8 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason)
@@ -257,7 +257,8 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason)
|
|
|
|
|
// TODO: move these to be after enter() once start_command_callback() no longer checks control_mode
|
|
|
|
|
previous_mode = control_mode; |
|
|
|
|
control_mode = &new_mode; |
|
|
|
|
const ModeReason previous_mode_reason = control_mode_reason; |
|
|
|
|
const ModeReason old_previous_mode_reason = previous_mode_reason; |
|
|
|
|
previous_mode_reason = control_mode_reason; |
|
|
|
|
control_mode_reason = reason; |
|
|
|
|
|
|
|
|
|
// attempt to enter new mode
|
|
|
|
@ -269,6 +270,7 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason)
@@ -269,6 +270,7 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason)
|
|
|
|
|
previous_mode = &old_previous_mode; |
|
|
|
|
control_mode = &old_mode; |
|
|
|
|
control_mode_reason = previous_mode_reason; |
|
|
|
|
previous_mode_reason = old_previous_mode_reason; |
|
|
|
|
|
|
|
|
|
// make sad noise
|
|
|
|
|
if (reason != ModeReason::INITIALISED) { |
|
|
|
@ -285,9 +287,6 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason)
@@ -285,9 +287,6 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason)
|
|
|
|
|
// exit previous mode
|
|
|
|
|
old_mode.exit(); |
|
|
|
|
|
|
|
|
|
// record reasons
|
|
|
|
|
control_mode_reason = reason; |
|
|
|
|
|
|
|
|
|
// log and notify mode change
|
|
|
|
|
logger.Write_Mode(control_mode->mode_number(), control_mode_reason); |
|
|
|
|
notify_mode(*control_mode); |
|
|
|
|