1#![allow(missing_docs)]
18
19#[derive(Clone, Copy, Debug, PartialEq, Eq)]
21pub struct EnumEntry {
22 pub name: &'static str,
24 pub value: u64,
26}
27
28#[derive(Clone, Copy, Debug, PartialEq, Eq)]
31pub struct EnumDescriptor {
32 pub name: &'static str,
34 pub bitmask: bool,
36 pub entries: &'static [EnumEntry],
38}
39
40impl EnumDescriptor {
41 pub fn value(&self, entry: &str) -> Option<u64> {
60 self.entries
61 .iter()
62 .find(|named| named.name == entry)
63 .map(|named| named.value)
64 }
65
66 pub fn entry(&self, value: u64) -> Option<&'static str> {
77 self.entries
78 .iter()
79 .find(|named| named.value == value)
80 .map(|named| named.name)
81 }
82
83 pub fn names(&self, value: u64) -> impl Iterator<Item = &'static str> + '_ {
106 let bitmask = self.bitmask;
107 let whole = if bitmask { None } else { self.entry(value) };
108 whole.into_iter().chain(
109 self.entries
110 .iter()
111 .filter(move |named| {
112 bitmask
113 && if value == 0 {
114 named.value == 0
115 } else {
116 named.value != 0 && value & named.value == named.value
117 }
118 })
119 .map(|named| named.name),
120 )
121 }
122}
123
124pub fn enum_named(name: &str) -> Option<&'static EnumDescriptor> {
134 ENUMS.iter().find(|described| described.name == name)
135}
136
137pub fn entry_value(entry: &str) -> Option<u64> {
158 ENUMS.iter().find_map(|described| described.value(entry))
159}
160
161macro_rules! dialect_enums {
162 ($(
163 $(#[$doc:meta])*
164 $module:ident $name:literal $ty:ident $($bitmask:ident)? {
165 $($constant:ident = $value:literal $entry:literal,)*
166 }
167 )*) => {
168 $(
169 $(#[$doc])*
170 pub mod $module {
171 $(pub const $constant: $ty = $value;)*
172 }
173 )*
174
175 pub const ENUMS: &[EnumDescriptor] = &[$(
178 EnumDescriptor {
179 name: $name,
180 bitmask: dialect_enums!(@bitmask $($bitmask)?),
181 entries: &[$(EnumEntry { name: $entry, value: $value }),*],
182 },
183 )*];
184 };
185 (@bitmask bitmask) => {
186 true
187 };
188 (@bitmask) => {
189 false
190 };
191}
192
193dialect_enums! {
194 mav_autopilot "MAV_AUTOPILOT" u8 {
196 GENERIC = 0 "MAV_AUTOPILOT_GENERIC",
197 RESERVED = 1 "MAV_AUTOPILOT_RESERVED",
198 SLUGS = 2 "MAV_AUTOPILOT_SLUGS",
199 ARDUPILOTMEGA = 3 "MAV_AUTOPILOT_ARDUPILOTMEGA",
200 OPENPILOT = 4 "MAV_AUTOPILOT_OPENPILOT",
201 GENERIC_WAYPOINTS_ONLY = 5 "MAV_AUTOPILOT_GENERIC_WAYPOINTS_ONLY",
202 GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY = 6 "MAV_AUTOPILOT_GENERIC_WAYPOINTS_AND_SIMPLE_NAVIGATION_ONLY",
203 GENERIC_MISSION_FULL = 7 "MAV_AUTOPILOT_GENERIC_MISSION_FULL",
204 INVALID = 8 "MAV_AUTOPILOT_INVALID",
205 PPZ = 9 "MAV_AUTOPILOT_PPZ",
206 UDB = 10 "MAV_AUTOPILOT_UDB",
207 FP = 11 "MAV_AUTOPILOT_FP",
208 PX4 = 12 "MAV_AUTOPILOT_PX4",
209 SMACCMPILOT = 13 "MAV_AUTOPILOT_SMACCMPILOT",
210 AUTOQUAD = 14 "MAV_AUTOPILOT_AUTOQUAD",
211 ARMAZILA = 15 "MAV_AUTOPILOT_ARMAZILA",
212 AEROB = 16 "MAV_AUTOPILOT_AEROB",
213 ASLUAV = 17 "MAV_AUTOPILOT_ASLUAV",
214 SMARTAP = 18 "MAV_AUTOPILOT_SMARTAP",
215 AIRRAILS = 19 "MAV_AUTOPILOT_AIRRAILS",
216 REFLEX = 20 "MAV_AUTOPILOT_REFLEX",
217 FLIX = 21 "MAV_AUTOPILOT_FLIX",
218 }
219
220 mav_type "MAV_TYPE" u8 {
222 GENERIC = 0 "MAV_TYPE_GENERIC",
223 FIXED_WING = 1 "MAV_TYPE_FIXED_WING",
224 QUADROTOR = 2 "MAV_TYPE_QUADROTOR",
225 COAXIAL = 3 "MAV_TYPE_COAXIAL",
226 HELICOPTER = 4 "MAV_TYPE_HELICOPTER",
227 ANTENNA_TRACKER = 5 "MAV_TYPE_ANTENNA_TRACKER",
228 GCS = 6 "MAV_TYPE_GCS",
229 AIRSHIP = 7 "MAV_TYPE_AIRSHIP",
230 FREE_BALLOON = 8 "MAV_TYPE_FREE_BALLOON",
231 ROCKET = 9 "MAV_TYPE_ROCKET",
232 GROUND_ROVER = 10 "MAV_TYPE_GROUND_ROVER",
233 SURFACE_BOAT = 11 "MAV_TYPE_SURFACE_BOAT",
234 SUBMARINE = 12 "MAV_TYPE_SUBMARINE",
235 HEXAROTOR = 13 "MAV_TYPE_HEXAROTOR",
236 OCTOROTOR = 14 "MAV_TYPE_OCTOROTOR",
237 TRICOPTER = 15 "MAV_TYPE_TRICOPTER",
238 FLAPPING_WING = 16 "MAV_TYPE_FLAPPING_WING",
239 KITE = 17 "MAV_TYPE_KITE",
240 ONBOARD_CONTROLLER = 18 "MAV_TYPE_ONBOARD_CONTROLLER",
241 VTOL_TAILSITTER_DUOROTOR = 19 "MAV_TYPE_VTOL_TAILSITTER_DUOROTOR",
242 VTOL_TAILSITTER_QUADROTOR = 20 "MAV_TYPE_VTOL_TAILSITTER_QUADROTOR",
243 VTOL_TILTROTOR = 21 "MAV_TYPE_VTOL_TILTROTOR",
244 VTOL_FIXEDROTOR = 22 "MAV_TYPE_VTOL_FIXEDROTOR",
245 VTOL_TAILSITTER = 23 "MAV_TYPE_VTOL_TAILSITTER",
246 VTOL_TILTWING = 24 "MAV_TYPE_VTOL_TILTWING",
247 VTOL_RESERVED5 = 25 "MAV_TYPE_VTOL_RESERVED5",
248 GIMBAL = 26 "MAV_TYPE_GIMBAL",
249 ADSB = 27 "MAV_TYPE_ADSB",
250 PARAFOIL = 28 "MAV_TYPE_PARAFOIL",
251 DODECAROTOR = 29 "MAV_TYPE_DODECAROTOR",
252 CAMERA = 30 "MAV_TYPE_CAMERA",
253 CHARGING_STATION = 31 "MAV_TYPE_CHARGING_STATION",
254 FLARM = 32 "MAV_TYPE_FLARM",
255 SERVO = 33 "MAV_TYPE_SERVO",
256 ODID = 34 "MAV_TYPE_ODID",
257 DECAROTOR = 35 "MAV_TYPE_DECAROTOR",
258 BATTERY = 36 "MAV_TYPE_BATTERY",
259 PARACHUTE = 37 "MAV_TYPE_PARACHUTE",
260 LOG = 38 "MAV_TYPE_LOG",
261 OSD = 39 "MAV_TYPE_OSD",
262 IMU = 40 "MAV_TYPE_IMU",
263 GPS = 41 "MAV_TYPE_GPS",
264 WINCH = 42 "MAV_TYPE_WINCH",
265 GENERIC_MULTIROTOR = 43 "MAV_TYPE_GENERIC_MULTIROTOR",
266 ILLUMINATOR = 44 "MAV_TYPE_ILLUMINATOR",
267 SPACECRAFT_ORBITER = 45 "MAV_TYPE_SPACECRAFT_ORBITER",
268 GROUND_QUADRUPED = 46 "MAV_TYPE_GROUND_QUADRUPED",
269 VTOL_GYRODYNE = 47 "MAV_TYPE_VTOL_GYRODYNE",
270 GRIPPER = 48 "MAV_TYPE_GRIPPER",
271 RADIO = 49 "MAV_TYPE_RADIO",
272 }
273
274 mav_mode_flag "MAV_MODE_FLAG" u8 bitmask {
276 SAFETY_ARMED = 128 "MAV_MODE_FLAG_SAFETY_ARMED",
277 MANUAL_INPUT_ENABLED = 64 "MAV_MODE_FLAG_MANUAL_INPUT_ENABLED",
278 HIL_ENABLED = 32 "MAV_MODE_FLAG_HIL_ENABLED",
279 STABILIZE_ENABLED = 16 "MAV_MODE_FLAG_STABILIZE_ENABLED",
280 GUIDED_ENABLED = 8 "MAV_MODE_FLAG_GUIDED_ENABLED",
281 AUTO_ENABLED = 4 "MAV_MODE_FLAG_AUTO_ENABLED",
282 TEST_ENABLED = 2 "MAV_MODE_FLAG_TEST_ENABLED",
283 CUSTOM_MODE_ENABLED = 1 "MAV_MODE_FLAG_CUSTOM_MODE_ENABLED",
284 }
285
286 mav_state "MAV_STATE" u8 {
288 UNINIT = 0 "MAV_STATE_UNINIT",
289 BOOT = 1 "MAV_STATE_BOOT",
290 CALIBRATING = 2 "MAV_STATE_CALIBRATING",
291 STANDBY = 3 "MAV_STATE_STANDBY",
292 ACTIVE = 4 "MAV_STATE_ACTIVE",
293 CRITICAL = 5 "MAV_STATE_CRITICAL",
294 EMERGENCY = 6 "MAV_STATE_EMERGENCY",
295 POWEROFF = 7 "MAV_STATE_POWEROFF",
296 FLIGHT_TERMINATION = 8 "MAV_STATE_FLIGHT_TERMINATION",
297 }
298
299 mav_protocol_capability "MAV_PROTOCOL_CAPABILITY" u64 bitmask {
302 MISSION_FLOAT = 1 "MAV_PROTOCOL_CAPABILITY_MISSION_FLOAT",
303 PARAM_FLOAT = 2 "MAV_PROTOCOL_CAPABILITY_PARAM_FLOAT",
304 MISSION_INT = 4 "MAV_PROTOCOL_CAPABILITY_MISSION_INT",
305 COMMAND_INT = 8 "MAV_PROTOCOL_CAPABILITY_COMMAND_INT",
306 PARAM_ENCODE_BYTEWISE = 16 "MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_BYTEWISE",
307 FTP = 32 "MAV_PROTOCOL_CAPABILITY_FTP",
308 SET_ATTITUDE_TARGET = 64 "MAV_PROTOCOL_CAPABILITY_SET_ATTITUDE_TARGET",
309 SET_POSITION_TARGET_LOCAL_NED = 128 "MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_LOCAL_NED",
310 SET_POSITION_TARGET_GLOBAL_INT = 256 "MAV_PROTOCOL_CAPABILITY_SET_POSITION_TARGET_GLOBAL_INT",
311 TERRAIN = 512 "MAV_PROTOCOL_CAPABILITY_TERRAIN",
312 RESERVED3 = 1024 "MAV_PROTOCOL_CAPABILITY_RESERVED3",
313 FLIGHT_TERMINATION = 2048 "MAV_PROTOCOL_CAPABILITY_FLIGHT_TERMINATION",
314 COMPASS_CALIBRATION = 4096 "MAV_PROTOCOL_CAPABILITY_COMPASS_CALIBRATION",
315 MAVLINK2 = 8192 "MAV_PROTOCOL_CAPABILITY_MAVLINK2",
316 MISSION_FENCE = 16384 "MAV_PROTOCOL_CAPABILITY_MISSION_FENCE",
317 MISSION_RALLY = 32768 "MAV_PROTOCOL_CAPABILITY_MISSION_RALLY",
318 RESERVED2 = 65536 "MAV_PROTOCOL_CAPABILITY_RESERVED2",
319 PARAM_ENCODE_C_CAST = 131072 "MAV_PROTOCOL_CAPABILITY_PARAM_ENCODE_C_CAST",
320 COMPONENT_IMPLEMENTS_GIMBAL_MANAGER = 262144 "MAV_PROTOCOL_CAPABILITY_COMPONENT_IMPLEMENTS_GIMBAL_MANAGER",
321 COMPONENT_ACCEPTS_GCS_CONTROL = 524288 "MAV_PROTOCOL_CAPABILITY_COMPONENT_ACCEPTS_GCS_CONTROL",
322 GRIPPER = 1048576 "MAV_PROTOCOL_CAPABILITY_GRIPPER",
323 }
324
325 mav_sys_status_sensor "MAV_SYS_STATUS_SENSOR" u32 bitmask {
331 GYRO_3D = 1 "MAV_SYS_STATUS_SENSOR_3D_GYRO",
332 ACCEL_3D = 2 "MAV_SYS_STATUS_SENSOR_3D_ACCEL",
333 MAG_3D = 4 "MAV_SYS_STATUS_SENSOR_3D_MAG",
334 ABSOLUTE_PRESSURE = 8 "MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE",
335 DIFFERENTIAL_PRESSURE = 16 "MAV_SYS_STATUS_SENSOR_DIFFERENTIAL_PRESSURE",
336 GPS = 32 "MAV_SYS_STATUS_SENSOR_GPS",
337 OPTICAL_FLOW = 64 "MAV_SYS_STATUS_SENSOR_OPTICAL_FLOW",
338 VISION_POSITION = 128 "MAV_SYS_STATUS_SENSOR_VISION_POSITION",
339 LASER_POSITION = 256 "MAV_SYS_STATUS_SENSOR_LASER_POSITION",
340 EXTERNAL_GROUND_TRUTH = 512 "MAV_SYS_STATUS_SENSOR_EXTERNAL_GROUND_TRUTH",
341 ANGULAR_RATE_CONTROL = 1024 "MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL",
342 ATTITUDE_STABILIZATION = 2048 "MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION",
343 YAW_POSITION = 4096 "MAV_SYS_STATUS_SENSOR_YAW_POSITION",
344 Z_ALTITUDE_CONTROL = 8192 "MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL",
345 XY_POSITION_CONTROL = 16384 "MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL",
346 MOTOR_OUTPUTS = 32768 "MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS",
347 RC_RECEIVER = 65536 "MAV_SYS_STATUS_SENSOR_RC_RECEIVER",
348 GYRO2_3D = 131072 "MAV_SYS_STATUS_SENSOR_3D_GYRO2",
349 ACCEL2_3D = 262144 "MAV_SYS_STATUS_SENSOR_3D_ACCEL2",
350 MAG2_3D = 524288 "MAV_SYS_STATUS_SENSOR_3D_MAG2",
351 GEOFENCE = 1048576 "MAV_SYS_STATUS_GEOFENCE",
352 AHRS = 2097152 "MAV_SYS_STATUS_AHRS",
353 TERRAIN = 4194304 "MAV_SYS_STATUS_TERRAIN",
354 REVERSE_MOTOR = 8388608 "MAV_SYS_STATUS_REVERSE_MOTOR",
355 LOGGING = 16777216 "MAV_SYS_STATUS_LOGGING",
356 BATTERY = 33554432 "MAV_SYS_STATUS_SENSOR_BATTERY",
357 PROXIMITY = 67108864 "MAV_SYS_STATUS_SENSOR_PROXIMITY",
358 SATCOM = 134217728 "MAV_SYS_STATUS_SENSOR_SATCOM",
359 PREARM_CHECK = 268435456 "MAV_SYS_STATUS_PREARM_CHECK",
360 OBSTACLE_AVOIDANCE = 536870912 "MAV_SYS_STATUS_OBSTACLE_AVOIDANCE",
361 PROPULSION = 1073741824 "MAV_SYS_STATUS_SENSOR_PROPULSION",
362 EXTENSION_USED = 2147483648 "MAV_SYS_STATUS_EXTENSION_USED",
363 }
364
365 mav_sys_status_sensor_extended "MAV_SYS_STATUS_SENSOR_EXTENDED" u32 bitmask {
368 RECOVERY_SYSTEM = 1 "MAV_SYS_STATUS_RECOVERY_SYSTEM",
369 LEAK = 2 "MAV_SYS_STATUS_SENSOR_LEAK",
370 GYRO3_3D = 4 "MAV_SYS_STATUS_SENSOR_3D_GYRO3",
371 ACCEL3_3D = 8 "MAV_SYS_STATUS_SENSOR_3D_ACCEL3",
372 GYRO4_3D = 16 "MAV_SYS_STATUS_SENSOR_3D_GYRO4",
373 ACCEL4_3D = 32 "MAV_SYS_STATUS_SENSOR_3D_ACCEL4",
374 MAG3_3D = 64 "MAV_SYS_STATUS_SENSOR_3D_MAG3",
375 MAG4_3D = 128 "MAV_SYS_STATUS_SENSOR_3D_MAG4",
376 }
377
378 mav_frame "MAV_FRAME" u8 {
380 GLOBAL = 0 "MAV_FRAME_GLOBAL",
381 LOCAL_NED = 1 "MAV_FRAME_LOCAL_NED",
382 MISSION = 2 "MAV_FRAME_MISSION",
383 GLOBAL_RELATIVE_ALT = 3 "MAV_FRAME_GLOBAL_RELATIVE_ALT",
384 LOCAL_ENU = 4 "MAV_FRAME_LOCAL_ENU",
385 GLOBAL_INT = 5 "MAV_FRAME_GLOBAL_INT",
386 GLOBAL_RELATIVE_ALT_INT = 6 "MAV_FRAME_GLOBAL_RELATIVE_ALT_INT",
387 LOCAL_OFFSET_NED = 7 "MAV_FRAME_LOCAL_OFFSET_NED",
388 BODY_NED = 8 "MAV_FRAME_BODY_NED",
389 BODY_OFFSET_NED = 9 "MAV_FRAME_BODY_OFFSET_NED",
390 GLOBAL_TERRAIN_ALT = 10 "MAV_FRAME_GLOBAL_TERRAIN_ALT",
391 GLOBAL_TERRAIN_ALT_INT = 11 "MAV_FRAME_GLOBAL_TERRAIN_ALT_INT",
392 BODY_FRD = 12 "MAV_FRAME_BODY_FRD",
393 RESERVED_13 = 13 "MAV_FRAME_RESERVED_13",
394 RESERVED_14 = 14 "MAV_FRAME_RESERVED_14",
395 RESERVED_15 = 15 "MAV_FRAME_RESERVED_15",
396 RESERVED_16 = 16 "MAV_FRAME_RESERVED_16",
397 RESERVED_17 = 17 "MAV_FRAME_RESERVED_17",
398 RESERVED_18 = 18 "MAV_FRAME_RESERVED_18",
399 RESERVED_19 = 19 "MAV_FRAME_RESERVED_19",
400 LOCAL_FRD = 20 "MAV_FRAME_LOCAL_FRD",
401 LOCAL_FLU = 21 "MAV_FRAME_LOCAL_FLU",
402 }
403
404 mav_cmd "MAV_CMD" u16 {
407 NAV_WAYPOINT = 16 "MAV_CMD_NAV_WAYPOINT",
408 NAV_LOITER_UNLIM = 17 "MAV_CMD_NAV_LOITER_UNLIM",
409 NAV_LOITER_TURNS = 18 "MAV_CMD_NAV_LOITER_TURNS",
410 NAV_LOITER_TIME = 19 "MAV_CMD_NAV_LOITER_TIME",
411 NAV_RETURN_TO_LAUNCH = 20 "MAV_CMD_NAV_RETURN_TO_LAUNCH",
412 NAV_LAND = 21 "MAV_CMD_NAV_LAND",
413 NAV_TAKEOFF = 22 "MAV_CMD_NAV_TAKEOFF",
414 NAV_LAND_LOCAL = 23 "MAV_CMD_NAV_LAND_LOCAL",
415 NAV_TAKEOFF_LOCAL = 24 "MAV_CMD_NAV_TAKEOFF_LOCAL",
416 NAV_CONTINUE_AND_CHANGE_ALT = 30 "MAV_CMD_NAV_CONTINUE_AND_CHANGE_ALT",
417 NAV_LOITER_TO_ALT = 31 "MAV_CMD_NAV_LOITER_TO_ALT",
418 DO_FOLLOW = 32 "MAV_CMD_DO_FOLLOW",
419 DO_FOLLOW_REPOSITION = 33 "MAV_CMD_DO_FOLLOW_REPOSITION",
420 DO_ORBIT = 34 "MAV_CMD_DO_ORBIT",
421 DO_FIGURE_EIGHT = 35 "MAV_CMD_DO_FIGURE_EIGHT",
422 NAV_ARC_WAYPOINT = 36 "MAV_CMD_NAV_ARC_WAYPOINT",
423 NAV_ROI = 80 "MAV_CMD_NAV_ROI",
424 NAV_PATHPLANNING = 81 "MAV_CMD_NAV_PATHPLANNING",
425 NAV_SPLINE_WAYPOINT = 82 "MAV_CMD_NAV_SPLINE_WAYPOINT",
426 NAV_VTOL_TAKEOFF = 84 "MAV_CMD_NAV_VTOL_TAKEOFF",
427 NAV_VTOL_LAND = 85 "MAV_CMD_NAV_VTOL_LAND",
428 NAV_GUIDED_ENABLE = 92 "MAV_CMD_NAV_GUIDED_ENABLE",
429 NAV_DELAY = 93 "MAV_CMD_NAV_DELAY",
430 NAV_PAYLOAD_PLACE = 94 "MAV_CMD_NAV_PAYLOAD_PLACE",
431 NAV_LAST = 95 "MAV_CMD_NAV_LAST",
432 CONDITION_DELAY = 112 "MAV_CMD_CONDITION_DELAY",
433 CONDITION_CHANGE_ALT = 113 "MAV_CMD_CONDITION_CHANGE_ALT",
434 CONDITION_DISTANCE = 114 "MAV_CMD_CONDITION_DISTANCE",
435 CONDITION_YAW = 115 "MAV_CMD_CONDITION_YAW",
436 CONDITION_LAST = 159 "MAV_CMD_CONDITION_LAST",
437 DO_SET_MODE = 176 "MAV_CMD_DO_SET_MODE",
438 DO_JUMP = 177 "MAV_CMD_DO_JUMP",
439 DO_CHANGE_SPEED = 178 "MAV_CMD_DO_CHANGE_SPEED",
440 DO_SET_HOME = 179 "MAV_CMD_DO_SET_HOME",
441 DO_SET_PARAMETER = 180 "MAV_CMD_DO_SET_PARAMETER",
442 DO_SET_RELAY = 181 "MAV_CMD_DO_SET_RELAY",
443 DO_REPEAT_RELAY = 182 "MAV_CMD_DO_REPEAT_RELAY",
444 DO_SET_SERVO = 183 "MAV_CMD_DO_SET_SERVO",
445 DO_REPEAT_SERVO = 184 "MAV_CMD_DO_REPEAT_SERVO",
446 DO_FLIGHTTERMINATION = 185 "MAV_CMD_DO_FLIGHTTERMINATION",
447 DO_CHANGE_ALTITUDE = 186 "MAV_CMD_DO_CHANGE_ALTITUDE",
448 DO_SET_ACTUATOR = 187 "MAV_CMD_DO_SET_ACTUATOR",
449 DO_RETURN_PATH_START = 188 "MAV_CMD_DO_RETURN_PATH_START",
450 DO_LAND_START = 189 "MAV_CMD_DO_LAND_START",
451 DO_RALLY_LAND = 190 "MAV_CMD_DO_RALLY_LAND",
452 DO_GO_AROUND = 191 "MAV_CMD_DO_GO_AROUND",
453 DO_REPOSITION = 192 "MAV_CMD_DO_REPOSITION",
454 DO_PAUSE_CONTINUE = 193 "MAV_CMD_DO_PAUSE_CONTINUE",
455 DO_SET_REVERSE = 194 "MAV_CMD_DO_SET_REVERSE",
456 DO_SET_ROI_LOCATION = 195 "MAV_CMD_DO_SET_ROI_LOCATION",
457 DO_SET_ROI_WPNEXT_OFFSET = 196 "MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET",
458 DO_SET_ROI_NONE = 197 "MAV_CMD_DO_SET_ROI_NONE",
459 DO_SET_ROI_SYSID = 198 "MAV_CMD_DO_SET_ROI_SYSID",
460 DO_CONTROL_VIDEO = 200 "MAV_CMD_DO_CONTROL_VIDEO",
461 DO_SET_ROI = 201 "MAV_CMD_DO_SET_ROI",
462 DO_DIGICAM_CONFIGURE = 202 "MAV_CMD_DO_DIGICAM_CONFIGURE",
463 DO_DIGICAM_CONTROL = 203 "MAV_CMD_DO_DIGICAM_CONTROL",
464 DO_MOUNT_CONFIGURE = 204 "MAV_CMD_DO_MOUNT_CONFIGURE",
465 DO_MOUNT_CONTROL = 205 "MAV_CMD_DO_MOUNT_CONTROL",
466 DO_SET_CAM_TRIGG_DIST = 206 "MAV_CMD_DO_SET_CAM_TRIGG_DIST",
467 DO_FENCE_ENABLE = 207 "MAV_CMD_DO_FENCE_ENABLE",
468 DO_PARACHUTE = 208 "MAV_CMD_DO_PARACHUTE",
469 DO_MOTOR_TEST = 209 "MAV_CMD_DO_MOTOR_TEST",
470 DO_INVERTED_FLIGHT = 210 "MAV_CMD_DO_INVERTED_FLIGHT",
471 DO_GRIPPER = 211 "MAV_CMD_DO_GRIPPER",
472 DO_AUTOTUNE_ENABLE = 212 "MAV_CMD_DO_AUTOTUNE_ENABLE",
473 NAV_SET_YAW_SPEED = 213 "MAV_CMD_NAV_SET_YAW_SPEED",
474 DO_SET_CAM_TRIGG_INTERVAL = 214 "MAV_CMD_DO_SET_CAM_TRIGG_INTERVAL",
475 DO_MOUNT_CONTROL_QUAT = 220 "MAV_CMD_DO_MOUNT_CONTROL_QUAT",
476 DO_GUIDED_MASTER = 221 "MAV_CMD_DO_GUIDED_MASTER",
477 DO_GUIDED_LIMITS = 222 "MAV_CMD_DO_GUIDED_LIMITS",
478 DO_ENGINE_CONTROL = 223 "MAV_CMD_DO_ENGINE_CONTROL",
479 DO_SET_MISSION_CURRENT = 224 "MAV_CMD_DO_SET_MISSION_CURRENT",
480 DO_LAST = 240 "MAV_CMD_DO_LAST",
481 PREFLIGHT_CALIBRATION = 241 "MAV_CMD_PREFLIGHT_CALIBRATION",
482 PREFLIGHT_SET_SENSOR_OFFSETS = 242 "MAV_CMD_PREFLIGHT_SET_SENSOR_OFFSETS",
483 PREFLIGHT_UAVCAN = 243 "MAV_CMD_PREFLIGHT_UAVCAN",
484 PREFLIGHT_STORAGE = 245 "MAV_CMD_PREFLIGHT_STORAGE",
485 PREFLIGHT_REBOOT_SHUTDOWN = 246 "MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN",
486 OVERRIDE_GOTO = 252 "MAV_CMD_OVERRIDE_GOTO",
487 OBLIQUE_SURVEY = 260 "MAV_CMD_OBLIQUE_SURVEY",
488 DO_SET_STANDARD_MODE = 262 "MAV_CMD_DO_SET_STANDARD_MODE",
489 MISSION_START = 300 "MAV_CMD_MISSION_START",
490 ACTUATOR_TEST = 310 "MAV_CMD_ACTUATOR_TEST",
491 CONFIGURE_ACTUATOR = 311 "MAV_CMD_CONFIGURE_ACTUATOR",
492 COMPONENT_ARM_DISARM = 400 "MAV_CMD_COMPONENT_ARM_DISARM",
493 RUN_PREARM_CHECKS = 401 "MAV_CMD_RUN_PREARM_CHECKS",
494 ILLUMINATOR_ON_OFF = 405 "MAV_CMD_ILLUMINATOR_ON_OFF",
495 DO_ILLUMINATOR_CONFIGURE = 406 "MAV_CMD_DO_ILLUMINATOR_CONFIGURE",
496 GET_HOME_POSITION = 410 "MAV_CMD_GET_HOME_POSITION",
497 INJECT_FAILURE = 420 "MAV_CMD_INJECT_FAILURE",
498 START_RX_PAIR = 500 "MAV_CMD_START_RX_PAIR",
499 GET_MESSAGE_INTERVAL = 510 "MAV_CMD_GET_MESSAGE_INTERVAL",
500 SET_MESSAGE_INTERVAL = 511 "MAV_CMD_SET_MESSAGE_INTERVAL",
501 REQUEST_MESSAGE = 512 "MAV_CMD_REQUEST_MESSAGE",
502 REQUEST_PROTOCOL_VERSION = 519 "MAV_CMD_REQUEST_PROTOCOL_VERSION",
503 REQUEST_AUTOPILOT_CAPABILITIES = 520 "MAV_CMD_REQUEST_AUTOPILOT_CAPABILITIES",
504 REQUEST_CAMERA_INFORMATION = 521 "MAV_CMD_REQUEST_CAMERA_INFORMATION",
505 REQUEST_CAMERA_SETTINGS = 522 "MAV_CMD_REQUEST_CAMERA_SETTINGS",
506 REQUEST_STORAGE_INFORMATION = 525 "MAV_CMD_REQUEST_STORAGE_INFORMATION",
507 STORAGE_FORMAT = 526 "MAV_CMD_STORAGE_FORMAT",
508 REQUEST_CAMERA_CAPTURE_STATUS = 527 "MAV_CMD_REQUEST_CAMERA_CAPTURE_STATUS",
509 REQUEST_FLIGHT_INFORMATION = 528 "MAV_CMD_REQUEST_FLIGHT_INFORMATION",
510 RESET_CAMERA_SETTINGS = 529 "MAV_CMD_RESET_CAMERA_SETTINGS",
511 SET_CAMERA_MODE = 530 "MAV_CMD_SET_CAMERA_MODE",
512 SET_CAMERA_ZOOM = 531 "MAV_CMD_SET_CAMERA_ZOOM",
513 SET_CAMERA_FOCUS = 532 "MAV_CMD_SET_CAMERA_FOCUS",
514 SET_STORAGE_USAGE = 533 "MAV_CMD_SET_STORAGE_USAGE",
515 SET_CAMERA_SOURCE = 534 "MAV_CMD_SET_CAMERA_SOURCE",
516 JUMP_TAG = 600 "MAV_CMD_JUMP_TAG",
517 DO_JUMP_TAG = 601 "MAV_CMD_DO_JUMP_TAG",
518 DO_SET_GLOBAL_ORIGIN = 611 "MAV_CMD_DO_SET_GLOBAL_ORIGIN",
519 DO_GIMBAL_MANAGER_PITCHYAW = 1000 "MAV_CMD_DO_GIMBAL_MANAGER_PITCHYAW",
520 DO_GIMBAL_MANAGER_CONFIGURE = 1001 "MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE",
521 IMAGE_START_CAPTURE = 2000 "MAV_CMD_IMAGE_START_CAPTURE",
522 IMAGE_STOP_CAPTURE = 2001 "MAV_CMD_IMAGE_STOP_CAPTURE",
523 REQUEST_CAMERA_IMAGE_CAPTURE = 2002 "MAV_CMD_REQUEST_CAMERA_IMAGE_CAPTURE",
524 DO_TRIGGER_CONTROL = 2003 "MAV_CMD_DO_TRIGGER_CONTROL",
525 CAMERA_TRACK_POINT = 2004 "MAV_CMD_CAMERA_TRACK_POINT",
526 CAMERA_TRACK_RECTANGLE = 2005 "MAV_CMD_CAMERA_TRACK_RECTANGLE",
527 CAMERA_STOP_TRACKING = 2010 "MAV_CMD_CAMERA_STOP_TRACKING",
528 VIDEO_START_CAPTURE = 2500 "MAV_CMD_VIDEO_START_CAPTURE",
529 VIDEO_STOP_CAPTURE = 2501 "MAV_CMD_VIDEO_STOP_CAPTURE",
530 VIDEO_START_STREAMING = 2502 "MAV_CMD_VIDEO_START_STREAMING",
531 VIDEO_STOP_STREAMING = 2503 "MAV_CMD_VIDEO_STOP_STREAMING",
532 REQUEST_VIDEO_STREAM_INFORMATION = 2504 "MAV_CMD_REQUEST_VIDEO_STREAM_INFORMATION",
533 REQUEST_VIDEO_STREAM_STATUS = 2505 "MAV_CMD_REQUEST_VIDEO_STREAM_STATUS",
534 LOGGING_START = 2510 "MAV_CMD_LOGGING_START",
535 LOGGING_STOP = 2511 "MAV_CMD_LOGGING_STOP",
536 AIRFRAME_CONFIGURATION = 2520 "MAV_CMD_AIRFRAME_CONFIGURATION",
537 CONTROL_HIGH_LATENCY = 2600 "MAV_CMD_CONTROL_HIGH_LATENCY",
538 PANORAMA_CREATE = 2800 "MAV_CMD_PANORAMA_CREATE",
539 DO_VTOL_TRANSITION = 3000 "MAV_CMD_DO_VTOL_TRANSITION",
540 ARM_AUTHORIZATION_REQUEST = 3001 "MAV_CMD_ARM_AUTHORIZATION_REQUEST",
541 SET_GUIDED_SUBMODE_STANDARD = 4000 "MAV_CMD_SET_GUIDED_SUBMODE_STANDARD",
542 SET_GUIDED_SUBMODE_CIRCLE = 4001 "MAV_CMD_SET_GUIDED_SUBMODE_CIRCLE",
543 CONDITION_GATE = 4501 "MAV_CMD_CONDITION_GATE",
544 NAV_FENCE_RETURN_POINT = 5000 "MAV_CMD_NAV_FENCE_RETURN_POINT",
545 NAV_FENCE_POLYGON_VERTEX_INCLUSION = 5001 "MAV_CMD_NAV_FENCE_POLYGON_VERTEX_INCLUSION",
546 NAV_FENCE_POLYGON_VERTEX_EXCLUSION = 5002 "MAV_CMD_NAV_FENCE_POLYGON_VERTEX_EXCLUSION",
547 NAV_FENCE_CIRCLE_INCLUSION = 5003 "MAV_CMD_NAV_FENCE_CIRCLE_INCLUSION",
548 NAV_FENCE_CIRCLE_EXCLUSION = 5004 "MAV_CMD_NAV_FENCE_CIRCLE_EXCLUSION",
549 NAV_RALLY_POINT = 5100 "MAV_CMD_NAV_RALLY_POINT",
550 UAVCAN_GET_NODE_INFO = 5200 "MAV_CMD_UAVCAN_GET_NODE_INFO",
551 DO_SET_SAFETY_SWITCH_STATE = 5300 "MAV_CMD_DO_SET_SAFETY_SWITCH_STATE",
552 DO_ADSB_OUT_IDENT = 10001 "MAV_CMD_DO_ADSB_OUT_IDENT",
553 PAYLOAD_PREPARE_DEPLOY = 30001 "MAV_CMD_PAYLOAD_PREPARE_DEPLOY",
554 PAYLOAD_CONTROL_DEPLOY = 30002 "MAV_CMD_PAYLOAD_CONTROL_DEPLOY",
555 FIXED_MAG_CAL_YAW = 42006 "MAV_CMD_FIXED_MAG_CAL_YAW",
556 DO_WINCH = 42600 "MAV_CMD_DO_WINCH",
557 GUIDED_CHANGE_SPEED = 43000 "MAV_CMD_GUIDED_CHANGE_SPEED",
558 GUIDED_CHANGE_ALTITUDE = 43001 "MAV_CMD_GUIDED_CHANGE_ALTITUDE",
559 GUIDED_CHANGE_HEADING = 43002 "MAV_CMD_GUIDED_CHANGE_HEADING",
560 EXTERNAL_POSITION_ESTIMATE = 43003 "MAV_CMD_EXTERNAL_POSITION_ESTIMATE",
561 WAYPOINT_USER_1 = 31000 "MAV_CMD_WAYPOINT_USER_1",
562 WAYPOINT_USER_2 = 31001 "MAV_CMD_WAYPOINT_USER_2",
563 WAYPOINT_USER_3 = 31002 "MAV_CMD_WAYPOINT_USER_3",
564 WAYPOINT_USER_4 = 31003 "MAV_CMD_WAYPOINT_USER_4",
565 WAYPOINT_USER_5 = 31004 "MAV_CMD_WAYPOINT_USER_5",
566 SPATIAL_USER_1 = 31005 "MAV_CMD_SPATIAL_USER_1",
567 SPATIAL_USER_2 = 31006 "MAV_CMD_SPATIAL_USER_2",
568 SPATIAL_USER_3 = 31007 "MAV_CMD_SPATIAL_USER_3",
569 SPATIAL_USER_4 = 31008 "MAV_CMD_SPATIAL_USER_4",
570 SPATIAL_USER_5 = 31009 "MAV_CMD_SPATIAL_USER_5",
571 USER_1 = 31010 "MAV_CMD_USER_1",
572 USER_2 = 31011 "MAV_CMD_USER_2",
573 USER_3 = 31012 "MAV_CMD_USER_3",
574 USER_4 = 31013 "MAV_CMD_USER_4",
575 USER_5 = 31014 "MAV_CMD_USER_5",
576 CAN_FORWARD = 32000 "MAV_CMD_CAN_FORWARD",
577 }
578
579 mav_param_type "MAV_PARAM_TYPE" u8 {
582 UINT8 = 1 "MAV_PARAM_TYPE_UINT8",
583 INT8 = 2 "MAV_PARAM_TYPE_INT8",
584 UINT16 = 3 "MAV_PARAM_TYPE_UINT16",
585 INT16 = 4 "MAV_PARAM_TYPE_INT16",
586 UINT32 = 5 "MAV_PARAM_TYPE_UINT32",
587 INT32 = 6 "MAV_PARAM_TYPE_INT32",
588 UINT64 = 7 "MAV_PARAM_TYPE_UINT64",
589 INT64 = 8 "MAV_PARAM_TYPE_INT64",
590 REAL32 = 9 "MAV_PARAM_TYPE_REAL32",
591 REAL64 = 10 "MAV_PARAM_TYPE_REAL64",
592 }
593
594 mav_result "MAV_RESULT" u8 {
596 ACCEPTED = 0 "MAV_RESULT_ACCEPTED",
597 TEMPORARILY_REJECTED = 1 "MAV_RESULT_TEMPORARILY_REJECTED",
598 DENIED = 2 "MAV_RESULT_DENIED",
599 UNSUPPORTED = 3 "MAV_RESULT_UNSUPPORTED",
600 FAILED = 4 "MAV_RESULT_FAILED",
601 IN_PROGRESS = 5 "MAV_RESULT_IN_PROGRESS",
602 CANCELLED = 6 "MAV_RESULT_CANCELLED",
603 COMMAND_LONG_ONLY = 7 "MAV_RESULT_COMMAND_LONG_ONLY",
604 COMMAND_INT_ONLY = 8 "MAV_RESULT_COMMAND_INT_ONLY",
605 COMMAND_UNSUPPORTED_MAV_FRAME = 9 "MAV_RESULT_COMMAND_UNSUPPORTED_MAV_FRAME",
606 NOT_IN_CONTROL = 10 "MAV_RESULT_NOT_IN_CONTROL",
607 }
608
609 mav_mission_result "MAV_MISSION_RESULT" u8 {
611 ACCEPTED = 0 "MAV_MISSION_ACCEPTED",
612 ERROR = 1 "MAV_MISSION_ERROR",
613 UNSUPPORTED_FRAME = 2 "MAV_MISSION_UNSUPPORTED_FRAME",
614 UNSUPPORTED = 3 "MAV_MISSION_UNSUPPORTED",
615 NO_SPACE = 4 "MAV_MISSION_NO_SPACE",
616 INVALID = 5 "MAV_MISSION_INVALID",
617 INVALID_PARAM1 = 6 "MAV_MISSION_INVALID_PARAM1",
618 INVALID_PARAM2 = 7 "MAV_MISSION_INVALID_PARAM2",
619 INVALID_PARAM3 = 8 "MAV_MISSION_INVALID_PARAM3",
620 INVALID_PARAM4 = 9 "MAV_MISSION_INVALID_PARAM4",
621 INVALID_PARAM5_X = 10 "MAV_MISSION_INVALID_PARAM5_X",
622 INVALID_PARAM6_Y = 11 "MAV_MISSION_INVALID_PARAM6_Y",
623 INVALID_PARAM7 = 12 "MAV_MISSION_INVALID_PARAM7",
624 INVALID_SEQUENCE = 13 "MAV_MISSION_INVALID_SEQUENCE",
625 DENIED = 14 "MAV_MISSION_DENIED",
626 OPERATION_CANCELLED = 15 "MAV_MISSION_OPERATION_CANCELLED",
627 }
628
629 mav_severity "MAV_SEVERITY" u8 {
631 EMERGENCY = 0 "MAV_SEVERITY_EMERGENCY",
632 ALERT = 1 "MAV_SEVERITY_ALERT",
633 CRITICAL = 2 "MAV_SEVERITY_CRITICAL",
634 ERROR = 3 "MAV_SEVERITY_ERROR",
635 WARNING = 4 "MAV_SEVERITY_WARNING",
636 NOTICE = 5 "MAV_SEVERITY_NOTICE",
637 INFO = 6 "MAV_SEVERITY_INFO",
638 DEBUG = 7 "MAV_SEVERITY_DEBUG",
639 }
640
641 mav_mission_type "MAV_MISSION_TYPE" u8 {
644 MISSION = 0 "MAV_MISSION_TYPE_MISSION",
645 FENCE = 1 "MAV_MISSION_TYPE_FENCE",
646 RALLY = 2 "MAV_MISSION_TYPE_RALLY",
647 ALL = 255 "MAV_MISSION_TYPE_ALL",
648 }
649
650 mav_battery_type "MAV_BATTERY_TYPE" u8 {
653 UNKNOWN = 0 "MAV_BATTERY_TYPE_UNKNOWN",
654 LIPO = 1 "MAV_BATTERY_TYPE_LIPO",
655 LIFE = 2 "MAV_BATTERY_TYPE_LIFE",
656 LION = 3 "MAV_BATTERY_TYPE_LION",
657 NIMH = 4 "MAV_BATTERY_TYPE_NIMH",
658 }
659
660 mav_battery_function "MAV_BATTERY_FUNCTION" u8 {
663 UNKNOWN = 0 "MAV_BATTERY_FUNCTION_UNKNOWN",
664 ALL = 1 "MAV_BATTERY_FUNCTION_ALL",
665 PROPULSION = 2 "MAV_BATTERY_FUNCTION_PROPULSION",
666 AVIONICS = 3 "MAV_BATTERY_FUNCTION_AVIONICS",
667 PAYLOAD = 4 "MAV_BATTERY_FUNCTION_PAYLOAD",
668 }
669
670 mav_battery_charge_state "MAV_BATTERY_CHARGE_STATE" u8 {
673 UNDEFINED = 0 "MAV_BATTERY_CHARGE_STATE_UNDEFINED",
674 OK = 1 "MAV_BATTERY_CHARGE_STATE_OK",
675 LOW = 2 "MAV_BATTERY_CHARGE_STATE_LOW",
676 CRITICAL = 3 "MAV_BATTERY_CHARGE_STATE_CRITICAL",
677 EMERGENCY = 4 "MAV_BATTERY_CHARGE_STATE_EMERGENCY",
678 FAILED = 5 "MAV_BATTERY_CHARGE_STATE_FAILED",
679 UNHEALTHY = 6 "MAV_BATTERY_CHARGE_STATE_UNHEALTHY",
680 CHARGING = 7 "MAV_BATTERY_CHARGE_STATE_CHARGING",
681 }
682
683 mav_battery_mode "MAV_BATTERY_MODE" u8 {
686 UNKNOWN = 0 "MAV_BATTERY_MODE_UNKNOWN",
687 AUTO_DISCHARGING = 1 "MAV_BATTERY_MODE_AUTO_DISCHARGING",
688 HOT_SWAP = 2 "MAV_BATTERY_MODE_HOT_SWAP",
689 }
690
691 mav_battery_fault "MAV_BATTERY_FAULT" u32 bitmask {
693 DEEP_DISCHARGE = 1 "MAV_BATTERY_FAULT_DEEP_DISCHARGE",
694 SPIKES = 2 "MAV_BATTERY_FAULT_SPIKES",
695 CELL_FAIL = 4 "MAV_BATTERY_FAULT_CELL_FAIL",
696 OVER_CURRENT = 8 "MAV_BATTERY_FAULT_OVER_CURRENT",
697 OVER_TEMPERATURE = 16 "MAV_BATTERY_FAULT_OVER_TEMPERATURE",
698 UNDER_TEMPERATURE = 32 "MAV_BATTERY_FAULT_UNDER_TEMPERATURE",
699 INCOMPATIBLE_VOLTAGE = 64 "MAV_BATTERY_FAULT_INCOMPATIBLE_VOLTAGE",
700 INCOMPATIBLE_FIRMWARE = 128 "MAV_BATTERY_FAULT_INCOMPATIBLE_FIRMWARE",
701 BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION = 256 "BATTERY_FAULT_INCOMPATIBLE_CELLS_CONFIGURATION",
702 }
703
704 mav_vtol_state "MAV_VTOL_STATE" u8 {
707 UNDEFINED = 0 "MAV_VTOL_STATE_UNDEFINED",
708 TRANSITION_TO_FW = 1 "MAV_VTOL_STATE_TRANSITION_TO_FW",
709 TRANSITION_TO_MC = 2 "MAV_VTOL_STATE_TRANSITION_TO_MC",
710 MC = 3 "MAV_VTOL_STATE_MC",
711 FW = 4 "MAV_VTOL_STATE_FW",
712 }
713
714 mav_landed_state "MAV_LANDED_STATE" u8 {
717 UNDEFINED = 0 "MAV_LANDED_STATE_UNDEFINED",
718 ON_GROUND = 1 "MAV_LANDED_STATE_ON_GROUND",
719 IN_AIR = 2 "MAV_LANDED_STATE_IN_AIR",
720 TAKEOFF = 3 "MAV_LANDED_STATE_TAKEOFF",
721 LANDING = 4 "MAV_LANDED_STATE_LANDING",
722 }
723
724 gps_fix_type "GPS_FIX_TYPE" u8 {
726 NO_GPS = 0 "GPS_FIX_TYPE_NO_GPS",
727 NO_FIX = 1 "GPS_FIX_TYPE_NO_FIX",
728 FIX_2D = 2 "GPS_FIX_TYPE_2D_FIX",
729 FIX_3D = 3 "GPS_FIX_TYPE_3D_FIX",
730 DGPS = 4 "GPS_FIX_TYPE_DGPS",
731 RTK_FLOAT = 5 "GPS_FIX_TYPE_RTK_FLOAT",
732 RTK_FIXED = 6 "GPS_FIX_TYPE_RTK_FIXED",
733 STATIC = 7 "GPS_FIX_TYPE_STATIC",
734 PPP = 8 "GPS_FIX_TYPE_PPP",
735 }
736
737 position_target_typemask "POSITION_TARGET_TYPEMASK" u16 bitmask {
745 X_IGNORE = 1 "POSITION_TARGET_TYPEMASK_X_IGNORE",
746 Y_IGNORE = 2 "POSITION_TARGET_TYPEMASK_Y_IGNORE",
747 Z_IGNORE = 4 "POSITION_TARGET_TYPEMASK_Z_IGNORE",
748 VX_IGNORE = 8 "POSITION_TARGET_TYPEMASK_VX_IGNORE",
749 VY_IGNORE = 16 "POSITION_TARGET_TYPEMASK_VY_IGNORE",
750 VZ_IGNORE = 32 "POSITION_TARGET_TYPEMASK_VZ_IGNORE",
751 AX_IGNORE = 64 "POSITION_TARGET_TYPEMASK_AX_IGNORE",
752 AY_IGNORE = 128 "POSITION_TARGET_TYPEMASK_AY_IGNORE",
753 AZ_IGNORE = 256 "POSITION_TARGET_TYPEMASK_AZ_IGNORE",
754 FORCE_SET = 512 "POSITION_TARGET_TYPEMASK_FORCE_SET",
755 YAW_IGNORE = 1024 "POSITION_TARGET_TYPEMASK_YAW_IGNORE",
756 YAW_RATE_IGNORE = 2048 "POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE",
757 }
758
759 mission_state "MISSION_STATE" u8 {
762 UNKNOWN = 0 "MISSION_STATE_UNKNOWN",
763 NO_MISSION = 1 "MISSION_STATE_NO_MISSION",
764 NOT_STARTED = 2 "MISSION_STATE_NOT_STARTED",
765 ACTIVE = 3 "MISSION_STATE_ACTIVE",
766 PAUSED = 4 "MISSION_STATE_PAUSED",
767 COMPLETE = 5 "MISSION_STATE_COMPLETE",
768 }
769}
770
771#[cfg(test)]
772mod tests {
773 use super::*;
774
775 #[test]
776 fn an_entry_name_belongs_to_one_enumeration() {
777 let names: Vec<&str> = ENUMS
778 .iter()
779 .flat_map(|described| described.entries.iter().map(|named| named.name))
780 .collect();
781 for (index, name) in names.iter().enumerate() {
782 assert!(!names[index + 1..].contains(name), "{name} appears twice");
783 }
784 }
785
786 #[test]
787 fn the_constants_and_the_names_agree() {
788 assert_eq!(
789 entry_value("MAV_TYPE_QUADROTOR"),
790 Some(u64::from(mav_type::QUADROTOR))
791 );
792 assert_eq!(
793 entry_value("MAV_SYS_STATUS_SENSOR_3D_GYRO"),
794 Some(u64::from(mav_sys_status_sensor::GYRO_3D))
795 );
796 assert_eq!(
797 entry_value("MAV_SYS_STATUS_PREARM_CHECK"),
798 Some(u64::from(mav_sys_status_sensor::PREARM_CHECK))
799 );
800 assert_eq!(
801 entry_value("MAV_MISSION_ACCEPTED"),
802 Some(u64::from(mav_mission_result::ACCEPTED))
803 );
804 assert_eq!(
805 entry_value("MAV_RESULT_CANCELLED"),
806 Some(u64::from(mav_result::CANCELLED))
807 );
808 assert_eq!(
809 entry_value("GPS_FIX_TYPE_3D_FIX"),
810 Some(u64::from(gps_fix_type::FIX_3D))
811 );
812 assert_eq!(
813 entry_value("MAV_PROTOCOL_CAPABILITY_MAVLINK2"),
814 Some(mav_protocol_capability::MAVLINK2)
815 );
816 }
817
818 #[test]
819 fn a_value_is_named_by_its_enumeration() {
820 let state = enum_named("MAV_STATE").expect("MAV_STATE");
821 assert!(!state.bitmask);
822 assert_eq!(state.entry(3), Some("MAV_STATE_STANDBY"));
823 assert_eq!(state.names(3).collect::<Vec<_>>(), ["MAV_STATE_STANDBY"]);
824 assert_eq!(state.entry(200), None);
825 assert_eq!(state.names(200).count(), 0);
826 assert!(enum_named("MAV_STATES").is_none());
827 }
828
829 #[test]
830 fn a_bitmask_is_named_bit_by_bit() {
831 let sensors = enum_named("MAV_SYS_STATUS_SENSOR").expect("MAV_SYS_STATUS_SENSOR");
832 assert!(sensors.bitmask);
833 let health = mav_sys_status_sensor::GYRO_3D
834 | mav_sys_status_sensor::GPS
835 | mav_sys_status_sensor::PREARM_CHECK;
836 assert_eq!(
837 sensors.names(u64::from(health)).collect::<Vec<_>>(),
838 [
839 "MAV_SYS_STATUS_SENSOR_3D_GYRO",
840 "MAV_SYS_STATUS_SENSOR_GPS",
841 "MAV_SYS_STATUS_PREARM_CHECK"
842 ]
843 );
844 assert_eq!(sensors.names(0).count(), 0);
845 assert_eq!(sensors.entry(u64::from(health)), None);
846 }
847
848 #[test]
849 fn the_dialect_marks_which_enumerations_are_bitmasks() {
850 for name in [
851 "MAV_MODE_FLAG",
852 "MAV_PROTOCOL_CAPABILITY",
853 "MAV_SYS_STATUS_SENSOR",
854 "MAV_SYS_STATUS_SENSOR_EXTENDED",
855 "MAV_BATTERY_FAULT",
856 "POSITION_TARGET_TYPEMASK",
857 ] {
858 assert!(enum_named(name).expect(name).bitmask, "{name}");
859 }
860 for name in [
861 "MAV_TYPE",
862 "MAV_STATE",
863 "MAV_CMD",
864 "MAV_RESULT",
865 "MAV_FRAME",
866 ] {
867 assert!(!enum_named(name).expect(name).bitmask, "{name}");
868 }
869 }
870}