42 #ifndef STATE_MACHINE_HELPER_H_ 43 #define STATE_MACHINE_HELPER_H_ 48 #include <uORB/topics/vehicle_status.h> 49 #include <uORB/topics/battery_status.h> 50 #include <uORB/topics/actuator_armed.h> 51 #include <uORB/topics/safety.h> 52 #include <uORB/topics/commander_state.h> 53 #include <uORB/topics/vehicle_status_flags.h> 56 TRANSITION_DENIED = -1,
57 TRANSITION_NOT_CHANGED = 0,
59 } transition_result_t;
61 enum class link_loss_actions_t {
73 ARM_REQ_MISSION_BIT = (1 << 0),
74 ARM_REQ_ARM_AUTH_BIT = (1 << 1),
75 ARM_REQ_GPS_BIT = (1 << 2),
78 extern const char *
const arming_state_names[];
80 bool is_safe(
const safety_s &safety,
const actuator_armed_s &armed);
83 arming_state_transition(vehicle_status_s *status,
const safety_s &safety,
const arming_state_t new_arming_state,
84 actuator_armed_s *armed,
const bool fRunPreArmChecks,
orb_advert_t *mavlink_log_pub,
85 vehicle_status_flags_s *status_flags,
const uint8_t arm_requirements,
const hrt_abstime &time_since_boot);
88 main_state_transition(
const vehicle_status_s &status,
const main_state_t new_main_state,
89 const vehicle_status_flags_s &status_flags, commander_state_s *internal_state);
93 bool set_nav_state(vehicle_status_s *status, actuator_armed_s *armed, commander_state_s *internal_state,
94 orb_advert_t *mavlink_log_pub,
const link_loss_actions_t data_link_loss_act,
const bool mission_finished,
95 const bool stay_in_failsafe,
const vehicle_status_flags_s &status_flags,
bool landed,
96 const link_loss_actions_t rc_loss_act,
const int offb_loss_act,
const int offb_loss_rc_act,
97 const int posctl_nav_loss_act);
103 bool check_invalid_pos_nav_state(vehicle_status_s *status,
bool old_failsafe,
orb_advert_t *mavlink_log_pub,
104 const vehicle_status_flags_s &status_flags,
const bool use_rc,
const bool using_global_pos);
106 bool prearm_check(
orb_advert_t *mavlink_log_pub,
const vehicle_status_flags_s &status_flags,
const safety_s &safety,
107 const uint8_t arm_requirements);
111 typedef enum LOW_BAT_ACTION {
116 } low_battery_action_t;
118 void battery_failsafe(
orb_advert_t *mavlink_log_pub,
const vehicle_status_s &status,
119 const vehicle_status_flags_s &status_flags, commander_state_s *internal_state,
const uint8_t battery_warning,
120 const low_battery_action_t low_bat_action);
__BEGIN_DECLS typedef void * orb_advert_t
ORB topic advertiser handle.
Definition: uORB.h:134
High-resolution timer with callouts and timekeeping.
API for the uORB lightweight object broker.
void enable_failsafe(vehicle_status_s *status, bool old_failsafe, orb_advert_t *mavlink_log_pub, const char *reason)
Enable failsafe and report to user.
Definition: state_machine_helper.cpp:380
__BEGIN_DECLS typedef uint64_t hrt_abstime
Absolute time, in microsecond units.
Definition: drv_hrt.h:58
bool set_nav_state(vehicle_status_s *status, actuator_armed_s *armed, commander_state_s *internal_state, orb_advert_t *mavlink_log_pub, const link_loss_actions_t data_link_loss_act, const bool mission_finished, const bool stay_in_failsafe, const vehicle_status_flags_s &status_flags, bool landed, const link_loss_actions_t rc_loss_act, const int offb_loss_act, const int offb_loss_rc_act, const int posctl_nav_loss_act)
Check failsafe and main status and set navigation status for navigator accordingly.
Definition: state_machine_helper.cpp:392