@@ -50,6 +50,7 @@ void getModeRequirements(uint8_t vehicle_type, failsafe_flags_s &flags)
50
50
flags.mode_req_local_position = 0 ;
51
51
flags.mode_req_local_position_relaxed = 0 ;
52
52
flags.mode_req_global_position = 0 ;
53
+ flags.mode_req_global_position_relaxed = 0 ;
53
54
flags.mode_req_local_alt = 0 ;
54
55
flags.mode_req_mission = 0 ;
55
56
flags.mode_req_offboard_signal = 0 ;
@@ -85,25 +86,49 @@ void getModeRequirements(uint8_t vehicle_type, failsafe_flags_s &flags)
85
86
// NAVIGATION_STATE_AUTO_MISSION
86
87
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_angular_velocity );
87
88
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_attitude );
88
- setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_local_position );
89
- setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_global_position );
89
+
90
+ if (vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING) {
91
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_global_position_relaxed );
92
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_local_position_relaxed );
93
+
94
+ } else {
95
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_global_position );
96
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_local_position );
97
+ }
98
+
90
99
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_local_alt );
91
100
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_mission );
92
101
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION, flags.mode_req_wind_and_flight_time_compliance );
93
102
94
103
// NAVIGATION_STATE_AUTO_LOITER
95
104
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_angular_velocity );
96
105
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_attitude );
97
- setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_position );
98
- setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_global_position );
106
+
107
+ if (vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING) {
108
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_global_position_relaxed );
109
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_position_relaxed );
110
+
111
+ } else {
112
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_global_position );
113
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_position );
114
+ }
115
+
99
116
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_alt );
100
117
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_wind_and_flight_time_compliance );
101
118
102
119
// NAVIGATION_STATE_AUTO_RTL
103
120
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_angular_velocity );
104
121
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_attitude );
105
- setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_local_position );
106
- setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_global_position );
122
+
123
+ if (vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING) {
124
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_global_position_relaxed );
125
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_local_position_relaxed );
126
+
127
+ } else {
128
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_global_position );
129
+ setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_local_position );
130
+ }
131
+
107
132
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_local_alt );
108
133
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_home_position );
109
134
setRequirement (vehicle_status_s::NAVIGATION_STATE_AUTO_RTL, flags.mode_req_prevent_arming );
0 commit comments