- Removed _mission_waypoints_changed in mission mode.
- Remove execution mode from mission
- mission mode uses own global position subscription instead of data from navigator.
- remove RTL type logic from navigator, will be set in the RTL mode itself later
- Remove unnecessary APIs from mission mode
- Make additional internal states to check if the mode is active and the mission is valid.
- Split up mission check from general update_mission function. update_mission function should only be called when the mode is active.
- Remove _mission_landing_in_progress flag from navigator. Keep it local to the modes which use the mission.
- mission Mode, make mission reset at activation if necessary not always while inactive.
- Make camera Trigger function
- mission mode uses internal land detection subscription instead of gathering information from navigator.
- mission mode uses internal vehicle status subscription instead of gathering information from navigator.
Otherwise the flight time restriction flag gets cleared too early, before
disarming (which puts the vehicle into the previous mode and it might
take off again).
Fixes the following case:
- user intention set to X
- failsafe triggers, mode = Y
- can_run for X becomes false
- user tries to switch to X
-> need to re-evaluate can_run
Previously, it was not possible to enable forwarding of messages to/from
teh USB instance because it does not have a param for it, like the
serial instances have.
With this commit, we change the default to always set forwarding on for
the USB instance as that is likely desired.
Signed-off-by: Julian Oes <julian@oes.ch>
- from the C standard, "All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use"
- from the C standard, "All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use"
The static object is destroyed on at_exit while threads might still be
inside a CS. This can lead to a hanging process.
Cleaner would be to gracefully stop the threads.
According to https://linux.die.net/man/3/pthread_cond_destroy:
Attempting to destroy a condition variable upon which other threads are
currently blocked results in undefined behavior.
Instead check if system has previously switched into LOITER to acheive the current
WP of type POSITION, and in that case stay in LOITER until altitude is reached.
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
Do the same as DO_REPOSITION wit only the altitude field populated
and MAV_DO_REPOSITION_FLAGS set, which means:
- switch to Loiter mode if not already in it
- set the current altitude to what is specified in the altitdue field,
keep current altitude setpoint otherwise
- keep current position setpoint
- fall back to current estimated position in case a position setpoint
is not finite
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>