The AHRS may be supplying as a home position through mechanisms other
than a GPS lock. Don't assume in the caller to update_home().
Rover: fold update_home_from_EKF back into sole caller
This method is confusingly similarly named to update_home - and they do
pretty much the opposite thing.
Rover: remove incorrect and misleading comments on set_home_to_current_location
Rover: rewrite update_home to not set home if no origin set
Also checks that home is set before using values from it
Rover: zero stack variables when updating home
If these are a problem we have significant problems through the code
also not triggered if manual-control messages arrive
also minor restructure of gcs_failsafe_check (non-functional)
also remove unnecessary failsafe_trigger call when heartbeats arrive
This fixes a bug in the G_Dt calculation which is used in the motors library and PID controllers. The issue occurred in cases where the ahrs_update was not being run which could happen because it's estimated time was too long.
This also properly runs the critical functions (update ahrs, run flight mode code, send outputs to motors) at up to 400hz
Rover: use base-class auxsw handling
Rover: factor out do_aux_function_change_mode
Rover: move mode number enumeration to be in Mode:: namespace
Rover: move mode switch handling to RC_Channel
Rover: rename control_modes.cpp to RC_Channel.cpp
Rover: move motor_active() to be a method on the motors class